Я продолжаю программировать какую-то навигацию с помощью клавиатуры в моей простой графической программе (используя C #). И я снова столкнулся с неприятностями.
Моя проблема в том, что я хочу обработать ввод с клавиатуры, чтобы переместить слой. Перемещение слоя с помощью мыши уже работает достаточно хорошо, но элемент управления не получает фокус ( для этого элемента управления не запускается ни KeyUp / KeyDown / KeyPress, ни GotFocus / LostFocus ).
Так как мой класс происходит от Panel (и переписывает несколько событий), я также перезаписал события, упомянутые выше, но мне не удается добиться запуска этих событий.
Я думаю, что мне удалось бы реализовать реакцию клавиатуры, используя что-то вроде Keyboard.GetState () или ProcessCmdWnd или что-то еще. Тем не менее: я все еще должен быть в состоянии сказать, когда элемент управления получил фокус.
Есть ли более или менее элегантный способ добавить эту возможность в пользовательский элемент управления (основанный на Panel)?
Я проверил много потоков здесь и мог бы использовать этот подход для ввода с клавиатуры. Однако проблема с фокусировкой остается.
Большое спасибо за информацию заранее!
Игорь.
p.s .: Я программирую на C # .NET v3.5, используя VS2008. Это приложение Windows.Forms, не WPF .