如何在Windows Forms / C#中测试 Ctrl ?
答案 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中读取控制标志(即在事件发生时),请使用KeyUp
或KeyDown
事件(不是KeyPress
):
private void HandleTextKeyDown(object sender, KeyEventArgs e)
{
if (e.Control && e.KeyCode == Keys.A)
{
((TextBox)sender).SelectAll();
e.Handled = true;
}
}