“自定义控件内部子控件”事件如何传递到主控件?

pfworld 2011-09-08 06:47:31
我在使用自定义控件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;
}
...全文
465 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
cxxylce0 2011-10-16
  • 打赏
  • 举报
回复
ghfghfghfg
pfworld 2011-09-16
  • 打赏
  • 举报
回复
经多次测试发现,原来是子控件不会处罚鼠标点击事件,子控件本省是一个老自定义控件,06年做的!
pfworld 2011-09-13
  • 打赏
  • 举报
回复
UP一下,帮忙有分!
sdl2005lyx 2011-09-09
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 pfworld 的回复:]

我的实际要实现的效果是这样的:

1、在form中点击自定义控件,隐藏自定义控件。
2、点击按钮显示自定义控件。

实际情况是,如果点击form中自定义控件内子控件好像没有作用【form中自定义控件事件不能获取子控件点击效果】。
[/Quote]

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

control1.Visable=!control1.Visable;
pfworld 2011-09-09
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 sdl2005lyx 的回复:]
我晕!你为什么要在的子控件事件处理呢?你不会另外拖一个button放到Form上啊,这样更直接啊!
[/Quote]

我点击自定义控件,自定义控件内包含图片类型的子控件!
pfworld 2011-09-09
  • 打赏
  • 举报
回复
经多次调试,发现在FORM中点击自定义控件内子控件,好像事件不执行!怪不得常规的方法都不行!
sdl2005lyx 2011-09-09
  • 打赏
  • 举报
回复
我晕!你为什么要在的子控件事件处理呢?你不会另外拖一个button放到Form上啊,这样更直接啊!
pfworld 2011-09-09
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 cxxylce0 的回复:]
5个三角的用户还问这么低级的问题。。。
[/Quote]

会也就不问这个问题了,实在找不到相关资料!
cxxylce0 2011-09-09
  • 打赏
  • 举报
回复
5个三角的用户还问这么低级的问题。。。
pfworld 2011-09-09
  • 打赏
  • 举报
回复
我的实际要实现的效果是这样的:

1、在form中点击自定义控件,隐藏自定义控件。
2、点击按钮显示自定义控件。

实际情况是,如果点击form中自定义控件内子控件好像没有作用【form中自定义控件事件不能获取子控件点击效果】。
pfworld 2011-09-09
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 sdl2005lyx 的回复:]
引用 3 楼 pfworld 的回复:

我的实际要实现的效果是这样的:

1、在form中点击自定义控件,隐藏自定义控件。
2、点击按钮显示自定义控件。

实际情况是,如果点击form中自定义控件内子控件好像没有作用【form中自定义控件事件不能获取子控件点击效果】。


楼主,你的实际需求,跟你现在的问题好像没什么关联!
你这个需求比起你发帖问的问题,要简单多了,
“在……
[/Quote]


问题是,如果在自定义控件点击事件中,点击到自定义控件的子控件,那么事件不会执行!
sdl2005lyx 2011-09-08
  • 打赏
  • 举报
回复
楼主,你的思路有问题,事件具有继承性,而不具有传递性!
但是,底层的事件,可以变相的一层一层“传递”到最外层!
本身是:一层一层触发了新的事件!

就你的问题而言,你先在的你的自定义控件中处理子控件的事件:

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)
{
。。。。。。
}

其实,不仅仅对于这种用层次关系的空间,对于普通的类,也可以采用这种方式,
逐层、变相的把事件“传递”到最外层!
gclol 2011-09-08
  • 打赏
  • 举报
回复
在子控件的click事件处理程序中调用自定义控件的click不就行了么,sander设置为自定义控件对象,EventArgs参数传同一个

111,097

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧