При поиске лучшего редактора кода энергия идет с VisVim, плагином для замены редактора кода VS энергией.
Почему бы не использовать собственные возможности? Я добавил событие 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
Установите переменную, когда событие нажатия клавиши запускает отслеживание, которое нажата клавиша, делайте свое дело (tm), а затем игнорируйте дальнейшие события для этой клавиши. При срабатывании keyup очистите переменную. Для отслеживания нескольких ключей может понадобиться список.