WPF: Как обнаружить Ключевое повторение в Ключе* события?

При поиске лучшего редактора кода энергия идет с VisVim, плагином для замены редактора кода VS энергией.

7
задан Dave Clemmer 31 August 2011 в 17:29
поделиться

2 ответа

Почему бы не использовать собственные возможности? Я добавил событие PreviewKeyDown в окно и два текстовых поля. Нажал и удерживал клавишу во втором текстовом поле, и это результат:

Repeat: False, key: D
Repeat: True, key: D
Repeat: True, key: D
Repeat: True, key: D
Repeat: True, key: D
Repeat: True, key: D
Repeat: True, key: D
Repeat: True, key: D

Это код, который я использовал:

private void Grid_PreviewKeyDown(object sender, KeyEventArgs e)
{
    textBox1.Text += String.Format(
        "Repeat: {0}, key: {1}\n", 
        e.IsRepeat, 
        e.Key);
}

Обновление: удалил весь мой код (был некоторый мусор из других тестов) и вставил в ваш код как есть. Это дает мне следующий вывод в консоли, поэтому я полагаю, что нам следует изучить другие причины ...

UP: key: D, repFalse, toggTrue, dowTrue, upFalse
UP: key: D, repTrue, toggTrue, dowTrue, upFalse
UP: key: D, repTrue, toggTrue, dowTrue, upFalse
UP: key: D, repTrue, toggTrue, dowTrue, upFalse
UP: key: D, repTrue, toggTrue, dowTrue, upFalse
UP: key: D, repTrue, toggTrue, dowTrue, upFalse
8
ответ дан 7 December 2019 в 05:24
поделиться

Установите переменную, когда событие нажатия клавиши запускает отслеживание, которое нажата клавиша, делайте свое дело (tm), а затем игнорируйте дальнейшие события для этой клавиши. При срабатывании keyup очистите переменную. Для отслеживания нескольких ключей может понадобиться список.

0
ответ дан 7 December 2019 в 05:24
поделиться
Другие вопросы по тегам:

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