【问题标题】:MouseLeave not firing if a WinForm has only one full-docked ListBox如果 WinForm 只有一个完全停靠的 ListBox,则 MouseLeave 不会触发
【发布时间】:2011-07-07 22:45:10
【问题描述】:

我有一个只有一个简单列表框的表单。列表框是完全停靠的,并且表单的 FormBorderStyle 设置为 None。

当我将 MouseLeave 事件附加到表单时,它不会触发。 (它也不会触发 MouseMove、MouseHover 等)

但是,如果我取消停靠列表框并调整它的大小以使表单的至少一部分可见,并且如果我将鼠标移到表单的可见部分上,则所有鼠标事件都会再次触发。

即使表单只包含一个完全停靠的列表框,如何让表单接收鼠标事件?

谢谢

【问题讨论】:

  • 你能把事件附加到列表框中吗?
  • 很明显,当整个表单被另一个控件覆盖时,您无法获得表单的鼠标事件。一切都进入列表框。
  • 所以基本上,WinForms 中没有事件冒泡。对吗?

标签: c# winforms listbox dock mouseleave


【解决方案1】:

它不应该触发,因为你的鼠标没有进入窗体,它进入了列表框。所以你应该在列表框控件中使用 MouseLeave 事件

【讨论】:

  • 我没有将事件附加到列表框的原因是它在其他时候可能不是列表框。我只是将对控件的引用(以填充表单的为准)保存到表单的私有变量中,并将事件附加/分离到该变量。还是谢谢。
【解决方案2】:

我认为这是不可能的。因为控件会处理事件,所以不会绕过Form。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-27
    • 2013-07-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多