【问题标题】:Use right-click with Windows Forms Button使用 Windows 窗体按钮右键单击
【发布时间】:2010-11-10 18:43:27
【问题描述】:

我正在编写一个用户应该能够更改按钮操作的应用程序。

用户应该右键单击一个按钮,然后从弹出的上下文菜单中选择一个选项。一旦做出选择,当用户使用正常点击时,按钮将执行不同的操作。

我已经让“Click”事件可以正常单击按钮,但是“MouseClick”事件处理程序无法正常工作。

“MouseClick”事件在常规左键单击时被激活,但在右键单击时永远不会被调用。

是否正在执行一些忽略右键单击的默认事件处理?

【问题讨论】:

    标签: c# .net user-interface events button


    【解决方案1】:

    如果您想显示一个包含可供选择的操作的上下文菜单,将ContextMenuStrip 分配给ContextMenuStrip 属性就足够了。通常不需要为此手动处理鼠标事件。

    【讨论】:

    • 另一个 SO 帖子可能有用:stackoverflow.com/questions/1044883/…
    • 谢谢。我会用这个方法。作为旁注,我确实发现“MouseUp”事件是我应该关注的事件。
    • @birdlips: 记忆很短,但另一方面是将近 20 天前 :o)
    【解决方案2】:

    很抱歉,这将是一个严重的 UI 漏洞。也许在按钮旁边添加一个小组合框会更有意义。

    也许是这样的?
    http://www.codeproject.com/KB/buttons/SplitButton.aspx

    【讨论】:

    • 我同意,非常不标准且令人困惑。糟糕的设计 IMO。
    • @Ed - 嗯,我的想法实际上非常类似于 Zyphrax 链接中发布的解决方案,所以我不认为它非常不标准和令人困惑。但是,链接的解决方案比我的更明显和优雅,所以如果它在未来的应用程序中有意义,我可能会朝这个方向发展。
    【解决方案3】:

    在 Button(和某些其他控件)中,MouseClick 事件仅针对左按钮触发。请参阅MSDN

    如果您想了解右键,请响应 MouseUp 事件——尽管正如其他发帖者指出的那样,这不是一个很好的 UI 习惯用法。

    【讨论】:

      【解决方案4】:

      当然最好在 MouseDown 事件而不是 MouseUp 事件上实现它。我不明白这与 MouseClick 事件有何不同

      编辑:刚刚试了一下,效果很好:)

      【讨论】:

        【解决方案5】:

        使用 Mouse UP 事件...测试 Button.X 和 Button.Y 是否在按钮的大小范围内,否则您已将鼠标从按钮上移开。 特里·G

        【讨论】:

          猜你喜欢
          • 2011-06-11
          • 2012-01-18
          • 2017-07-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-08-31
          相关资源
          最近更新 更多