我有一个列表,列表中每一项都是一个自定义控件,然后这个列表的上下文菜单里面可以维护这个列表里的每一项。
但现在遇到一个问题,在弹出上下文件菜单的时候,一般是可以激发MouseDown事件的,但如果自右键在自定义控件里的label或内部控件上,虽然可以弹出上下文件菜单,但无法激发MouseDown事件。
我想知道如何让父控件接收到子控件的相应的MouseDown事件,即我所谓的事件穿透。订阅的事件可能比较多,自定义控件上的子控件也比较多,功能有点复杂。 有没有办法快速实现这个功能呢?
在主窗体的 PreTranslateMessage 中处理.
确实需要这样处理,IMessageFilter接口,然后转换坐标。不知道从哪儿抄了个RECT的定义,有问题,差点死在坐标转换上,终于搞定了。
好像有个点击透过属性
是吗?我没找到啊
@沧海一杰: IsHitTestVisible有木有
@iEvent: 木有。这会不会是WPF或SL里的。
@沧海一杰: 哈哈,说对了,看看WF有木有
可以考虑在自定义控件中公开事件,当鼠标右键单击该控件时触发事件。外部窗体使用该控件时,为自定义的事件指定代码,这样就可以解决了。
一个自定义控件上的子控件现在有十多个,而且存在其它容器控件,所以嵌套共有四五层,这样写我担心我搞不定啊。
@沧海一杰: 这么复杂啊!
@于为源: 我想会应该有一个ControlFromPoint之类的方法可以调用吧?