繁体   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