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