簡體   English   中英

使用C#測試Ctrl鍵是否已關閉

[英]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!");
        }
    }

為了完整性...... ModifierKeysControl的靜態屬性,因此即使您不是直接在事件處理程序中,也可以測試它:

public static bool IsControlDown()
{
    return (Control.ModifierKeys & Keys.Control) == Keys.Control;
}

這不是對手頭問題的真正答案,但我需要在控制台應用程序中執行此操作,細節稍有不同。

我必須添加對WindowsBasePresentationFramework引用,此時我可以這樣做:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM