【发布时间】:2017-05-16 17:42:15
【问题描述】:
我有一个包含一些控件的用户控件(黑色矩形)。 当鼠标悬停在用户控件上时,我想在红色矩形中显示两个图像。
目前我已经实现了用户控件的 mouseEnter(显示图像)和 mouseLeave(隐藏图像)事件。
问题是当鼠标悬停在另一个控件(例如标签)时,来自用户控件的 mouseLeave 事件被触发并且图像消失。
我可以为所有控件实现鼠标进入/鼠标离开事件,但这似乎是浪费时间、大量重复数据删除和内存使用率低。 我还考虑过禁用其他控件的事件,但不知道该怎么做,这似乎更像是一种黑客行为。我试图禁用控件,但颜色发生了变化,又是一次肮脏的黑客攻击。
如果鼠标悬停在其控件之一上,也许我可以阻止触发用户控件 mouseLeave 事件?
我确信有一个正确的方法可以做到这一点,但无法弄清楚。
如果有人想出更好的标题,我会改变它。
感谢您的帮助,
问候
【问题讨论】:
-
如果是 Windows 窗体,为什么不直接枚举
mainUserControl.Controls并检查事件中是否有Focused? IE。在mouseLeave事件中,如果有孩子专注,则不要触发更改。 -
这个thread 可能对你想做的事情有用。
标签: c# winforms user-controls