【发布时间】:2009-09-02 14:13:50
【问题描述】:
我正在尝试创建像富按钮一样工作的用户控件。 它应该对悬停有影响 - 我在 MouseEnter 上打开边框并在 MouseLeave 上再次关闭。 但是,当我将鼠标悬停在控件中的标签上时,它会触发 Control.MouseLeave。 有什么办法可以预防吗?
【问题讨论】:
我正在尝试创建像富按钮一样工作的用户控件。 它应该对悬停有影响 - 我在 MouseEnter 上打开边框并在 MouseLeave 上再次关闭。 但是,当我将鼠标悬停在控件中的标签上时,它会触发 Control.MouseLeave。 有什么办法可以预防吗?
【问题讨论】:
首先,焦点 Enter 和 Leave 是不同于 MouseEnter 和 MouseLeave 的事件。焦点处理键盘输入。 MouseEnter 和 MouseLeave 处理鼠标现在的位置。
输入嵌套控件会在父控件上触发 MouseLeave。您可以通过将控件的 Capture 属性设置为 true 来捕获鼠标,但您可能会发现其行为与您预期的不同。
你可以看看我的帖子here。我对嵌套控件有同样的问题。我选择通过调用 Application.AddMessageFilter 创建一个 .NET 等效的鼠标钩子。
另一种选择是删除内部标签控件并在按钮的 OnPaint 中手动绘制文本。
【讨论】: