【发布时间】:2018-10-06 13:44:01
【问题描述】:
这似乎应该有效,但事实并非如此。我在 SWITCH 语句上设置了调试停止。此事件仅在左键单击时触发。什么都没有发生,并且在中键或右键单击时不会触发方法。有任何想法吗?附言我已经尝试过使用 MouseUp 和 MouseDown 事件和同样的问题。
这是我的代码:
this.textBox1.MouseClick +=
new System.Windows.Forms.MouseEventHandler(this.textBox1_MouseClick);
private void textBox1_MouseClick(object sender, MouseEventArgs e)
{
switch (e.Button)
{
case MouseButtons.Left:
// Left click
textBox1.Text = "left";
break;
case MouseButtons.Right:
// Right click
textBox1.Text = "right";
break;
case MouseButtons.Middle:
// Middle click
textBox1.Text = "middle";
break;
}
}
【问题讨论】:
-
改用
textBox1_MouseDown事件!这在这里工作正常;为避免弹出上下文菜单,您可能需要禁用快捷方式。顺便说一句:建议像这样测试鼠标按钮:if (e.Button.HasFlag(MouseButtons.Left)).. etc.. -
@TaW 在我发帖之前我做的第一件事是尝试 MouseDown 和 MouseUp。我有同样的问题。放置一个断点,该方法永远不会在中键或左键单击时触发。
-
我知道你在写的时候试过了。但它在这里仍然有效。你把断点放在哪里?
switch声明? -
@TaW 断点在开关线上
-
这是 by design 用于 TextBox 和 RichTextBox 类。注意 MouseButtons.Left 的测试。我不确定为什么这被认为是必要的,它可能与本机操作系统控件中的内置上下文菜单有关。它可以通过从 TextBox 派生您自己的类并覆盖 OnMouseUp() 来修复,现在省略按钮上的测试。到那时,您可能会发现为什么它被认为是必要的:)
标签: c# right-click mouseclick-event