Я хочу получить нажатия клавиши Delete и ничего не сделать, когда клавиша нажата. Как я могу сделать это в WPF и Windows Forms?
Просто проверьте обработчик событий key_press
или Key_Down
на конкретном элементе управления и проверьте, как WPF:
if (e.Key == Key.Delete)
{
e.Handle = false;
}
Для Windows Forms:
if (e.KeyCode == Keys.Delete)
{
e.Handled = false;
}
Для WPF добавьте обработчик KeyDown
:
private void Window_KeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Delete)
{
MessageBox.Show("delete pressed");
e.Handled = true;
}
}
Это почти то же самое, что и для WinForms:
private void Window_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Delete)
{
MessageBox.Show("delete pressed");
e.Handled = true;
}
}
И не забудьте включить KeyPreview
на.
Если вы хотите предотвратить выполнение действия по умолчанию для клавиш, установите e.Handled = true
, как показано выше. То же самое в WinForms и WPF
Я не знаю о WPF, но попробуйте событие KeyDown
вместо события KeyPress
для Winforms.
См. статью MSDN о Control.KeyPress, в частности фразу «Событие KeyPress не вызывается клавишами без символов; однако клавиши без символов вызывают события KeyDown и KeyUp».