[英]Test if the Ctrl key is down using C#
我有一個表單,用戶可以用鼠標雙擊它,它會做一些事情。 現在我希望能夠知道當用戶雙擊表單時用戶是否也按住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;
}
這不是對手頭問題的真正答案,但我需要在控制台應用程序中執行此操作,細節稍有不同。
我必須添加對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");
}
上面說的是同一個soneone,但是比較不同於零,這應該更快一點並且在大多數架構上使用更少的指令:
public static bool IsControlDown()
{
return (Control.ModifierKeys & Keys.Control) != 0;
}
這對我有用:
if(Keyboard.IsKeyDown(Key.LeftCtrl))
{}
並添加對PresentationCore和WindowsBase的引用
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.