Подтвердить что ты не робот

Комбинация клавиш для кнопки

В С# (Microsoft Visual Studio 2010), как назначить сочетание клавиш с кнопкой, например, следующим?

    private void closeButton_Click(object sender, EventArgs e)
    {
        // Close the program
        this.Close();
    }

Я знаю, что могу использовать "&" символ в кнопке "Текст" и создайте ярлык Alt - n, но я хотел бы создать один ярлык для нажатия клавиши, например c, чтобы выполнить описанное выше.

4b9b3361

Ответ 1

KeyDown - ваш друг;) Например, если вы хотите, чтобы клавиша быстрого доступа A, когда нажата кнопка Shift, попробуйте следующее:

    void Form1_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.KeyCode == Keys.A && e.Shift) 
            // Do something
    }

Если вы хотите "настоящую" комбинацию клавиш, вы можете использовать крючки. Посмотрите на вопрос о переполнении стека RegisterHotKeys и глобальные перехватчики клавиатуры?.

Ответ 2

Здесь другой подход:

protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
    switch(keyData)
    {
         case Keys.F2:
             // do something...
             return true;
         case Keys.F3:
             // do something...
             return true;
         case Keys.F4:
             // do something...
             return true;
         default:
             return base.ProcessCmdKey(ref msg, keyData);
    }            
}

Вам не нужно изменять значение KeyPreview.