【发布时间】:2010-09-13 15:24:51
【问题描述】:
我在一个控件上捕获了一个MouseDown 事件,它在签名中给了我一个MouseEventArgs 对象。现在我希望能够判断用户在单击时是否按住了“Shift”或“Control”键。但是MouseEventArgs 对象不包含任何键盘信息!
判断单击时是否按住键盘 Shift/Ctrl 键的最简单方法是什么?
【问题讨论】:
我在一个控件上捕获了一个MouseDown 事件,它在签名中给了我一个MouseEventArgs 对象。现在我希望能够判断用户在单击时是否按住了“Shift”或“Control”键。但是MouseEventArgs 对象不包含任何键盘信息!
判断单击时是否按住键盘 Shift/Ctrl 键的最简单方法是什么?
【问题讨论】:
使用 Control.ModifierKeys 属性查看按下的内容。例如:
private void Form1_MouseClick(object sender, MouseEventArgs e) {
if (Control.ModifierKeys == Keys.Control) {
Console.WriteLine("Ctrl+Click");
}
}
其他修饰符是Keys.Alt 和Keys.Shift。查找与(Keys.Control | Keys.Shift) 的组合。
【讨论】:
Control.ModifierKeys.HasFlag(Keys.Control)——如果 CTRL+true > 被按下。
在 C# 中,您可以使用 - 进行检查
Keyboard.IsKeyDown(Key.LeftShift) or key.RightShift
http://msdn.microsoft.com/en-us/library/system.windows.input.keyboard.iskeydown.aspx
http://msdn.microsoft.com/en-us/library/system.windows.input.key.aspx
【讨论】: