Комбинация клавиш для кнопки
В С# (Microsoft Visual Studio 2010), как назначить сочетание клавиш с кнопкой, например, следующим?
private void closeButton_Click(object sender, EventArgs e)
{
// Close the program
this.Close();
}
Я знаю, что могу использовать "&" символ в кнопке "Текст" и создайте ярлык Alt - n, но я хотел бы создать один ярлык для нажатия клавиши, например c, чтобы выполнить описанное выше.
Ответы
Ответ 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
.