【问题标题】:C# MouseLeave triggered before context menu shown?C# MouseLeave 在显示上下文菜单之前触发?
【发布时间】:2011-04-11 03:34:49
【问题描述】:

我的表单上有一个 ContextMenu,默认情况下应该禁用某些选项,但在用户右键单击面板时启用。

按照我写这个的方式,允许这个特定菜单项的面板有两个事件处理程序:

  • MouseEnter -> 启用该选项
  • MouseLeave -> 禁用该选项

MouseEnter 有效,但不幸的是,只要用户右键单击,就会调用 MouseLeave。这意味着无论用户在哪里右键单击,菜单项始终处于禁用状态。

任何想法如何解决这个问题?

【问题讨论】:

  • MouseLeave 不应该是正确的候选人。你应该使用 ContextMenu 的事件来做你在 MouseLeave 上做的事情。

标签: c# winforms events contextmenu


【解决方案1】:

这是不可避免的。一旦弹出上下文菜单,鼠标就会被菜单捕获,并且面板的 MouseLeave 事件将被触发。您将不得不以不同的方式执行此操作。我想不出一个像样的选择,你这样做对我来说没有任何意义。 Panel 有自己的 ContextMenuStrip 属性,也许这是一个线索。或者 ContextMenuStrip.SourceControl 属性。

【讨论】:

  • 谢谢汉斯。这有点费时,但我重写了实现 ContextMenuStrip 的方式并将其直接附加到面板。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-17
  • 1970-01-01
相关资源
最近更新 更多