首页 新闻 会员 周边

c# winform 事件穿透?

0
悬赏园豆:10 [已解决问题] 解决于 2013-11-15 20:05

我有一个列表,列表中每一项都是一个自定义控件,然后这个列表的上下文菜单里面可以维护这个列表里的每一项。

但现在遇到一个问题,在弹出上下文件菜单的时候,一般是可以激发MouseDown事件的,但如果自右键在自定义控件里的label或内部控件上,虽然可以弹出上下文件菜单,但无法激发MouseDown事件。

我想知道如何让父控件接收到子控件的相应的MouseDown事件,即我所谓的事件穿透。订阅的事件可能比较多,自定义控件上的子控件也比较多,功能有点复杂。 有没有办法快速实现这个功能呢? 

空明流光的主页 空明流光 | 初学一级 | 园豆:106
提问于:2013-11-15 16:27
< >
分享
最佳答案
0

在主窗体的 PreTranslateMessage 中处理.

收获园豆:8
Launcher | 高人七级 |园豆:45045 | 2013-11-15 17:16

确实需要这样处理,IMessageFilter接口,然后转换坐标。不知道从哪儿抄了个RECT的定义,有问题,差点死在坐标转换上,终于搞定了。

空明流光 | 园豆:106 (初学一级) | 2013-11-15 20:05
其他回答(2)
0

好像有个点击透过属性

收获园豆:1
iEvent | 园豆:529 (小虾三级) | 2013-11-15 16:31

是吗?我没找到啊

支持(0) 反对(0) 空明流光 | 园豆:106 (初学一级) | 2013-11-15 16:34

@沧海一杰: IsHitTestVisible有木有

支持(0) 反对(0) iEvent | 园豆:529 (小虾三级) | 2013-11-15 16:36

@iEvent: 木有。这会不会是WPF或SL里的。

支持(0) 反对(0) 空明流光 | 园豆:106 (初学一级) | 2013-11-15 16:38

@沧海一杰: 哈哈,说对了,看看WF有木有

支持(0) 反对(0) iEvent | 园豆:529 (小虾三级) | 2013-11-15 16:40
0

可以考虑在自定义控件中公开事件,当鼠标右键单击该控件时触发事件。外部窗体使用该控件时,为自定义的事件指定代码,这样就可以解决了。

收获园豆:1
于为源 | 园豆:956 (小虾三级) | 2013-11-15 16:40

一个自定义控件上的子控件现在有十多个,而且存在其它容器控件,所以嵌套共有四五层,这样写我担心我搞不定啊。

支持(0) 反对(0) 空明流光 | 园豆:106 (初学一级) | 2013-11-15 16:45

@沧海一杰: 这么复杂啊!

支持(0) 反对(0) 于为源 | 园豆:956 (小虾三级) | 2013-11-15 16:49

@于为源: 我想会应该有一个ControlFromPoint之类的方法可以调用吧?

支持(0) 反对(0) 空明流光 | 园豆:106 (初学一级) | 2013-11-15 16:53
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册