UWP: Как подавить событие нажатия клавиши в UWP? - PullRequest
0 голосов
/ 01 февраля 2020

У меня есть код winform для подавления нажатия клавиш. Здесь это

if (e.KeyCode == Keys.Up || e.KeyCode == Keys.Left || e.KeyCode == Keys.Delete) {
    e.SuppressKeyPress = true;
}

Я хочу то же самое в UWP и пробовал это

if (e.Key == Windows.System.VirtualKey.Up || e.Key == Windows.System.VirtualKey.Down || e.Key == Windows.System.VirtualKey.Delete) {
    e.SuppressKeyPress = true;
}

Но его выдача мне ошибки 'KeyRoutedEventArgs' не содержит определения для 'SuppressKeyPress' и невозможно найти доступный метод расширения 'SuppressKeyPress', принимающий первый аргумент типа 'KeyRoutedEventArgs' (вам не хватает директивы using или ссылки на сборку?

Ответы [ 2 ]

2 голосов
/ 03 февраля 2020

UWP: Как подавить событие нажатия клавиши в UWP?

UWP не содержит SuppressKeyPress в пределах KeyRoutedEventArgs, если вы хотите подавить нажатие клавиши, вы можете обнаружить PreviewKeyDown событие для Window.Current.Content, которое будет вызвано до вашего KeyDown события. Пожалуйста, попробуйте следующий код.

Window.Current.Content.PreviewKeyDown += Content_PreviewKeyDown;
private void Content_PreviewKeyDown(object sender, KeyRoutedEventArgs e)
{

    if (e.Key == VirtualKey.Left | e.Key == VirtualKey.Right | e.Key == VirtualKey.Up | e.Key == VirtualKey.Down | e.KeyCode == VirtualKey.Delete)
    {
        e.Handled = true;
    }
    else
    {
        e.Handled = false;

    }
}
2 голосов
/ 01 февраля 2020

Вы можете запретить другим обработчикам обрабатывать это событие, пометив его как обработанное:

if (e.Key == Windows.System.VirtualKey.Up || e.Key == Windows.System.VirtualKey.Down || e.Key == Windows.System.VirtualKey.Delete)
{
    e.Handled = true;
}

true , чтобы отметить обработанное перенаправленное событие; false , чтобы оставить перенаправленное событие необработанным, что позволяет событию потенциально направлять дальше. По умолчанию false .
- KeyRoutedEventArgs.Handled

...