在C#中测试'Ctrl'keydown

时间:2009-07-17 14:15:06

标签: c# winforms

如何在Windows Forms / C#中测试 Ctrl

3 个答案:

答案 0 :(得分:15)

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

答案 1 :(得分:5)

如果要在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();
   }
}

答案 2 :(得分:1)

为旧问题添加迟到的答案......

其他答案读取控制键的当前状态。如果要直接从传递的事件args中读取控制标志(即在事件发生时),请使用KeyUpKeyDown事件(不是KeyPress ):

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