Так что у меня проблема с ситуацией. У меня есть приложение, которое является MDI-приложением, которое открывает пользовательские документы. У моего родителя MDI есть ToolStrip, с несколькими элементами управления, текстовое поле и кнопка. Текстовое поле содержит значение qty для элемента, затем есть кнопка для добавления элемента в документ. модель для самой быстрой работы, начиная с текстового поля qty, введите qty, tab в текстовое поле номера детали и введите номер #, затем нажмите кнопку добавления и нажмите либо клавишу ввода, либо клавишу пробела. Это происходит быстрее, чем с помощью мыши, чтобы щелкнуть по кнопке, или нажмите, чтобы ввести текстовое поле. Поэтому я хочу, чтобы мое приложение автоматически фокусировало текстовое поле qty после запуска кнопки.Разница между событиями мыши и ключа ToolStripMenuItem
Я обработал событие ToolStripMenuItem.Click, которое добавляет элемент, а затем переориентирует поле qty и отлично работает, когда мышь используется для нажатия кнопки. Но по какой-то причине я еще не обнаружил, что это НЕ работает, когда клавиатура вызывает кнопку. Я знаю, что событие щелчка запускается, потому что элемент добавляется правильно, но фокус не обрабатывается правильно. Фактически, в этом случае кажется, что фокус просто полностью потерян, вкладка перестает функционировать, фокус не может быть восстановлен, за исключением мыши. Я попытался следующие:
вызовов Form.Activate() я родительская форма и обрабатывать Активированный событие, чтобы сосредоточиться текстовое поле.
Вызовите Focus() в родительской форме и обработайте событие GotFocus, чтобы сфокусировать текстовое поле.
Это как если базовая структура не может правильно обрабатывать события клавиш, и неты Ключевых событий подвергаются для контроля ToolStripMenuItemButton. Я немного растерялся. Приложение работает, как работает мышь, и приложение действительно может быть использовано, но для лучшей функциональности мне нужно заставить эту работу работать, чтобы быстрый ввод данных можно было сделать без использования мыши.
Не должно быть никакой разницы между обеими ситуациями в том, что касается данного события. Здесь я вижу две возможные проблемы: либо вы делаете что-то в другом событии, которое не запускается в обоих случаях (например: KeyUp не запускается мышью); или событие клика не достигается в обоих случаях (и вы говорите, что этого не происходит ...). В любом случае, лучше всего взглянуть на код, пожалуйста, разместите соответствующие части. – varocarbas
@varocarbas - Я подтвердил его проблему, создав простой пример тестирования. По какой-то причине класс ToolStripButton не имеет никаких событий, связанных с клавиатурой. –
Я смог воспроизвести вашу ситуацию (конечно, странно, без сомнения); хотя ответ, который вы получили, кажется, не дает всегда работающего решения (иногда работает, иногда нет), но, возможно, это самое лучшее, что у вас есть ... – varocarbas