我有一个表单,用户可以双击鼠标并执行某些操作。现在我想知道用户是否还按住了Ctrl键并双击表单。
如何判断用户是否按住了Ctrl键?
我有一个表单,用户可以双击鼠标并执行某些操作。现在我想知道用户是否还按住了Ctrl键并双击表单。
如何判断用户是否按住了Ctrl键?
在 .NET 4 中,您可以使用以下简单方法:
private void Control_DoubleClick(object sender, EventArgs e)
{
if (ModifierKeys.HasFlag(Keys.Control))
{
MessageBox.Show("Ctrl is pressed!");
}
}
如果您未使用.NET 4,则无法使用Enum.HasFlag
,但是在以前的版本中实现相同的结果:
private void CustomFormControl_DoubleClick(object sender, EventArgs e)
{
if ((ModifierKeys & Keys.Control) == Keys.Control)
{
MessageBox.Show("Ctrl is pressed!");
}
}
为了完整起见... ModifierKeys
是 Control
的一个静态属性,所以即使你不直接在事件处理程序中,也可以测试它:
public static bool IsControlDown()
{
return (Control.ModifierKeys & Keys.Control) == Keys.Control;
}
Control.
限定符。 - eidylon虽然这并不是回答问题的方法,但我需要在控制台应用程序中完成此操作,并且细节略有不同。
我不得不添加对 WindowsBase
和 PresentationFramework
的引用,然后在此时我可以执行以下操作:
if (System.Windows.Input.Keyboard.Modifiers == ModifierKeys.Control)
blah
只是在这里添加一下,以防其他人也在进行类似的操作。
即使是这样也可以
private void Control_MouseDoubleClick(object sender, MouseEventArgs e)
{
if (ModifierKeys == Keys.Control)
MessageBox.Show("with CTRL");
}
if(Keyboard.IsKeyDown(Key.LeftCtrl))
{}
并添加对 PresentationCore 和 WindowsBase 的引用
上面有人说了同样的话,但是与零进行比较时不同,这应该会更快,并且在大多数架构上使用更少的指令:
public static bool IsControlDown()
{
return (Control.ModifierKeys & Keys.Control) != 0;
}