如何判断在MouseDown事件中是否按下了Shift?

Sha*_*ica 21 events winforms

MouseDown在控件上捕获一个事件,它MouseEventArgs在签名中给了我一个对象.现在我希望能够判断用户在单击时是否按住"Shift"或"Control"键.但该MouseEventArgs对象不包含任何键盘信息!

什么是告诉键盘Shift/ Ctrl键是否在点击时被保持的最简单方法?

Han*_*ant 34

使用Controls.ModifierKeys属性查看按下的内容.例如:

    private void Form1_MouseClick(object sender, MouseEventArgs e) {
        if (Control.ModifierKeys == Keys.Control) {
            Console.WriteLine("Ctrl+Click");
        }
    }
Run Code Online (Sandbox Code Playgroud)

其他修饰符是Keys.AltKeys.Shift.例如,找到组合(Keys.Control | Keys.Shift).

  • 因为它是一个按位标志枚举(即可以同时是多个值),你可能需要`Control.ModifierKeys.HasFlag(Keys.Control)` - 如果按下_CTRL + <ANYTHING> _,这将提供`true`. (4认同)