【发布时间】:2009-07-17 14:15:06
【问题描述】:
如何在Windows Forms/C# 中测试 Ctrl?
【问题讨论】:
如何在Windows Forms/C# 中测试 Ctrl?
【问题讨论】:
bool ctrl = ((Control.ModifierKeys & Keys.Control) == Keys.Control);
【讨论】:
如果您想在按键处理程序中检测,您可以查看修饰符属性:
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”是从表单或控件派生的,那么您可以随时进行此调用,而不仅仅是在键盘事件处理程序。
但是,如果您想确保按下组合,例如 Ctrl-A,则需要一些额外的逻辑。
private void myKeyPress(object sender,
System.Windows.Forms.KeyPressEventArgs e)
{
if (((Control.ModifierKeys & Keys.Control) == Keys.Control)
&& e.KeyChar == 'A')
{
SelectAll();
}
}
【讨论】:
为旧问题添加迟到的答案...
其他答案读取控制键的当前状态。如果您想直接从传递的事件参数中读取控制标志(即事件发生时的情况),请使用KeyUp 或KeyDown 事件(不是KeyPress):
private void HandleTextKeyDown(object sender, KeyEventArgs e)
{
if (e.Control && e.KeyCode == Keys.A)
{
((TextBox)sender).SelectAll();
e.Handled = true;
}
}
【讨论】: