我在使用自定义控件Click事件是发现点击自定义控件内控件不会触发自定义控件Click事件,觉得应该是控件参数没有传递到自定义控件事件内,请问如何把自定义控件内子控件Click事件参数传递到自定义控件Click事件?       private void ledViewSub_MouseClick(object sender, MouseEventArgs e)
        {
             ledViewMain_MouseClick(sender,e);    
        }
       private void ledViewMain_MouseClick(object sender, MouseEventArgs e)
        {
              
        }可是没有立即响应!先要做效果,点击自定义控件任何位置,隐藏包含自定义控件的panel。实际是只有自定义控件非子控件位置点击才有效果!        private void ledViewMain1_MouseClick(object sender, MouseEventArgs e)
        {
            this.panel.Visible = false;
            this.pictureBox.Visible = true;   
        }

解决方案 »

  1.   

    在子控件的click事件处理程序中调用自定义控件的click不就行了么,sander设置为自定义控件对象,EventArgs参数传同一个
      

  2.   

    楼主,你的思路有问题,事件具有继承性,而不具有传递性!
    但是,底层的事件,可以变相的一层一层“传递”到最外层!
    本身是:一层一层触发了新的事件!就你的问题而言,你先在的你的自定义控件中处理子控件的事件: private void ledViewSub_MouseClick(object sender, MouseEventArgs e)
      {
           if(this.MouseClick!=null) 
           {
               this.MouseClick(this,e);//此时的this 指的是主控件,而sender是子控件。此时触发主控件事件
           }
      }当然在主控件依附的窗体Form上,订阅主控件事件:
    this.ledViewMain.MouseClick+=ledViewMain1_MouseClick;最后在Form 里处理主控件的事件:
    private void ledViewMain1_MouseClick(object sender, MouseEventArgs e)
      {
             
      }其实,不仅仅对于这种用层次关系的空间,对于普通的类,也可以采用这种方式,
    逐层、变相的把事件“传递”到最外层!
      

  3.   

    我的实际要实现的效果是这样的:1、在form中点击自定义控件,隐藏自定义控件。
    2、点击按钮显示自定义控件。实际情况是,如果点击form中自定义控件内子控件好像没有作用【form中自定义控件事件不能获取子控件点击效果】。
      

  4.   

    经多次调试,发现在FORM中点击自定义控件内子控件,好像事件不执行!怪不得常规的方法都不行!
      

  5.   


    楼主,你的实际需求,跟你现在的问题好像没什么关联!
    你这个需求比起你发帖问的问题,要简单多了,
    “在form中点击自定义控件,隐藏自定义控件”,“点击按钮显示自定义控件”
    你统一在按钮事件是做处理就可以了:   control1.Visable=!control1.Visable;
      

  6.   

    我晕!你为什么要在的子控件事件处理呢?你不会另外拖一个button放到Form上啊,这样更直接啊!