关于 c#:使用右键单击 Windows 窗体按钮

Use right-click with Windows Forms Button

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

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

我已经让 "Click" 事件用于正常的按钮单击,但是 "MouseClick" 事件处理程序无法正常工作。

"MouseClick" 事件会在常规左键单击时激活,但不会在右键单击时调用。

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


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

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


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

edit: 刚试过这个,效果很好:)


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


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

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


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