首页 新闻 会员 周边 捐助

C#用户控件mouseleave事件问题

0
悬赏园豆:10 [已解决问题] 解决于 2010-05-12 13:12

自定义控件fileControl里面添加了openButton、searchButton等几个按钮,当鼠标移到fileButton时,在filepanel里添加fileControl显示出来,当鼠标离开fileControl时则隐藏fileControl(把fileControl从filepanel中删除),但是鼠标进入fileControl里面的Button里面试图点击时还触发了Mouseleave事件,导致fileControl从filepanel中删除,不能进行下一步操作,怎么样才能给个判断,让鼠标进入fileControl里面的Button时不隐藏fileControl

柳东的主页 柳东 | 初学一级 | 园豆:180
提问于:2010-05-07 20:47
< >
分享
最佳答案
0

在 MouseLeave 事件中,通过查找当前控件的 Parent 进行递归查找吧,如果递归找到了 FileControl 就不隐藏。

收获园豆:10
周巍 | 小虾三级 |园豆:735 | 2010-05-10 14:17
谢谢你的回答,我去试试!
柳东 | 园豆:180 (初学一级) | 2010-05-10 20:11
怎么得到当前控件?mouseLeave里通过sender得到的是fileControl
柳东 | 园豆:180 (初学一级) | 2010-05-10 20:15
@柳东:通过 Windows API 的 ChildWindowFromPoint 函数可以根据当前鼠标位置获取 Parent 控件的子控件,这样,你连循环可能都不用了。
周巍 | 园豆:735 (小虾三级) | 2010-05-12 12:04
@周巍:谢谢!
柳东 | 园豆:180 (初学一级) | 2010-05-12 13:12
@柳东:有没有相关实例给我看一下......我太菜了~~
柳东 | 园豆:180 (初学一级) | 2010-05-12 16:45
其他回答(2)
0

加flag吧。

三阶 | 园豆:1636 (小虾三级) | 2010-05-08 11:44
那就等于是判断鼠标在控件里的相对位置,可是通过e得到的X跟Y是相对于屏幕的位置......
支持(0) 反对(0) 柳东 | 园豆:180 (初学一级) | 2010-05-10 20:18
0

那你就在试着在fileButton里定义事件,以显示fileControl。在添加的fileControl里定义一个事件,让鼠标离开它时,删除或是隐藏此控件。

bndy | 园豆:235 (菜鸟二级) | 2010-05-08 16:22
我就是这么做的呀,可是鼠标进入fileControl里的button时也会触发mouseLeave事件,导致我本来要去点fileControl里的button,但是fileControl却消失了......
支持(0) 反对(0) 柳东 | 园豆:180 (初学一级) | 2010-05-10 20:10
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册