簡體   English   中英

在C#中測試'Ctrl'keydown

[英]Test for 'Ctrl' keydown in C#

如何在Windows Forms / C#中測試Ctrl down?

bool ctrl = ((Control.ModifierKeys & Keys.Control) == Keys.Control);

如果要在Key按下處理程序中檢測,您將查看修改器屬性:

private void button1_KeyPress(object sender, 
                              System.Windows.Forms.KeyPressEventArgs e) 
{
   if ((Control.ModifierKeys & Keys.Control) == Keys.Control) 
   {
     MessageBox.Show("Pressed " + Keys.Control);
   }
}

實際上,看着它並且看到它並沒有使用e參數,只要你的“this”來自Form或Control,那么你可以隨時進行這個調用,而不僅僅是在鍵盤事件處理程序中。

但是,如果要確保組合,例如按下Ctrl - A,則需要一些額外的邏輯。

private void myKeyPress(object sender, 
                        System.Windows.Forms.KeyPressEventArgs e) 
{
   if (((Control.ModifierKeys & Keys.Control) == Keys.Control) 
        && e.KeyChar == 'A')
   {
     SelectAll();
   }
}

為舊問題添加遲到的答案......

其他答案讀取控制鍵的當前狀態。 如果要直接從傳遞的事件args讀取控制標志(即在事件發生時),請使用KeyUpKeyDown事件(而不是KeyPress ):

private void HandleTextKeyDown(object sender, KeyEventArgs e)
{
    if (e.Control && e.KeyCode == Keys.A)
    {
        ((TextBox)sender).SelectAll();
        e.Handled = true;
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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