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

Use right-click with Windows Forms Button


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

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

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

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

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


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

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

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


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

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


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

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


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

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


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


来源:https://www.codenong.com/1127490/

微信公众号
手机浏览(小程序)

Warning: get_headers(): SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57

Warning: get_headers(): Failed to enable crypto in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57

Warning: get_headers(https://static.shanhubei.com/qrcode/qrcode_viewid_9087.jpg): failed to open stream: operation failed in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57
0
分享到:
没有账号? 忘记密码?