Тест на нажатие клавиши Ctrl в C # - PullRequest
8 голосов
/ 17 июля 2009

Как мне проверить Ctrl в Windows Forms / C #?

Ответы [ 3 ]

15 голосов
/ 17 июля 2009
bool ctrl = ((Control.ModifierKeys & Keys.Control) == Keys.Control);
5 голосов
/ 17 июля 2009

Если вы хотите обнаружить в обработчике нажатия клавиш, вы посмотрите на свойства модификатора:

private void button1_KeyPress(object sender, 
                              System.Windows.Forms.KeyPressEventArgs e) 
{
   if ((Control.ModifierKeys & Keys.Control) == Keys.Control) 
   {
     MessageBox.Show("Pressed " + Keys.Control);
   }
}

На самом деле, глядя на это и видя, что он не использует аргумент e, кажется, что если ваше "это" получено из формы или элемента управления, вы можете сделать этот вызов в любое время, а не только в обработчик событий клавиатуры.

Однако, если вы хотите обеспечить комбинацию, такую ​​как Ctrl - A , вам потребуется дополнительная логика.

private void myKeyPress(object sender, 
                        System.Windows.Forms.KeyPressEventArgs e) 
{
   if (((Control.ModifierKeys & Keys.Control) == Keys.Control) 
        && e.KeyChar == 'A')
   {
     SelectAll();
   }
}
1 голос
/ 24 апреля 2013

Добавление позднего ответа на старый вопрос ...

Другие ответы читают текущее состояние клавиши управления. Если вы хотите напрямую прочитать управляющий флаг из переданных аргументов события (т. Е. Как это было в момент возникновения события), используйте события KeyUp или KeyDown (не KeyPress):

private void HandleTextKeyDown(object sender, KeyEventArgs e)
{
    if (e.Control && e.KeyCode == Keys.A)
    {
        ((TextBox)sender).SelectAll();
        e.Handled = true;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...