【问题标题】:How to determine if user clicks out of ContextMenuStrip?如何确定用户是否点击了 ContextMenuStrip?
【发布时间】:2013-01-02 03:14:35
【问题描述】:

我正在构建没有显示任何表单的 winform 应用程序(表单的不透明度为 0,ShowInTaskbar 属性为 false)。它只能从托盘通知图标访问。当用户用鼠标左键单击它时,将显示 contextMenustrip 菜单。因为我想检测鼠标左键单击,所以不能使用 NotifyIcon 的 ContextMenu 属性。

我想,如果用户在菜单外点击时,它应该隐藏。我不知道我该怎么做...

如果我显示了表单,我可以检测到停用表单事件,然后隐藏我的菜单,但在所描述的情况下它看起来更难。

【问题讨论】:

  • @HansPassant 谢谢。我找不到合适的话题。它有效。
  • @HansPassant 谢谢。我找不到合适的话题。有用。根据您的建议,我使用反射在 MouseUp 事件中调用 ShowContextMenu() 方法。我以不同的方式做的是我有两个 ContextMenuStrip 菜单:一个与 NFI 的 ContextMenuProperty 连接,第二个不与 NIF 连接。使用反射调用 ShowContextMenu() 并稍后手动显示未连接的菜单可以解决问题,尽管我没有在 NIF ContextMenu 属性中连接此菜单。你能解释一下原因吗?

标签: c# winforms


【解决方案1】:

1) 设置WindowState = FormWindowState.Minimized而不是将不透明度设置为 0 更好

2) 您无法检测程序外部的鼠标点击,因为它们由其他程序或您的操作系统控制,但处理 LeaveMouseLeave 事件应该会对您有所帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-01
    • 2018-01-20
    • 2011-01-01
    • 2013-08-20
    相关资源
    最近更新 更多