2009-07-17 32 views

回答

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

如果你想在一个按键处理来检测,你会看在调节特性:

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 - 一个被压,你会需要一些额外的逻辑。

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

添加迟到的回答一个老问题...

其他的答案读取控制键的当前状态。如果您想直接从传递事件参数读取控制标志(即,因为它是在该事件发生的时间),使用KeyUpKeyDown事件(不KeyPress):

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