我在使用自定义控件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;
}
{
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;
}
但是,底层的事件,可以变相的一层一层“传递”到最外层!
本身是:一层一层触发了新的事件!就你的问题而言,你先在的你的自定义控件中处理子控件的事件: 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)
{
}其实,不仅仅对于这种用层次关系的空间,对于普通的类,也可以采用这种方式,
逐层、变相的把事件“传递”到最外层!
2、点击按钮显示自定义控件。实际情况是,如果点击form中自定义控件内子控件好像没有作用【form中自定义控件事件不能获取子控件点击效果】。
楼主,你的实际需求,跟你现在的问题好像没什么关联!
你这个需求比起你发帖问的问题,要简单多了,
“在form中点击自定义控件,隐藏自定义控件”,“点击按钮显示自定义控件”
你统一在按钮事件是做处理就可以了: control1.Visable=!control1.Visable;