Как получить нажатие клавиши Delete в C#?

Я хочу получить нажатия клавиши Delete и ничего не сделать, когда клавиша нажата. Как я могу сделать это в WPF и Windows Forms?

10
задан Peter Mortensen 28 September 2014 в 04:00
поделиться

3 ответа

Просто проверьте обработчик событий key_press или Key_Down на конкретном элементе управления и проверьте, как WPF:

if (e.Key == Key.Delete)
{
   e.Handle = false;
}

Для Windows Forms:

if (e.KeyCode == Keys.Delete)
{
   e.Handled = false;
}
2
ответ дан 3 December 2019 в 13:22
поделиться

Для 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

17
ответ дан 3 December 2019 в 13:22
поделиться

Я не знаю о WPF, но попробуйте событие KeyDown вместо события KeyPress для Winforms.

См. статью MSDN о Control.KeyPress, в частности фразу «Событие KeyPress не вызывается клавишами без символов; однако клавиши без символов вызывают события KeyDown и KeyUp».

3
ответ дан 3 December 2019 в 13:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: