У моей компании большое приложение, написанное на VB6, и по историческим причинам приложение перемещается с помощью клавиши Enter, а не с помощью клавиши Tab. Я не знаю VB6, но я знаю, что они в настоящее время устанавливают фокус для каждого элемента управления в большом элементе select в событии KeyUp формы, если это EnterKey. Теперь мы начинаем конвертировать в .NET и должны постоянно поддерживать согласованность, чтобы пользователям не приходилось использовать TAB в некоторых формах, а ENTER - на других. Я хочу написать формы предков, которые будут автоматически вводиться из поля в поле вместо табуляции. Сотрудник сказал мне, что способ, которым это делается в VB6, состоит в том, чтобы обрабатывать кнопки не на событии CLICK, а в событии KEYUP. Мне нужно продолжать делать это, чтобы у меня не осталось оставшихся событий KeyUp, чтобы вернуться к VB6 после завершения моей формы. Порядок событий для кнопокКак перемещаться между полями с помощью клавиши ввода
- button_PreviewKeyDown
- button_Click (по-видимому, заменив событие KeyPress)
- form_KeyUp
- button_KeyUp
Я создал следующие формы:
- В событии KeyUp формы ANCESTOR, c heck, чтобы увидеть, если это ключ ввода. Если это ключ ввода, а активный элемент управления не является кнопкой, он перемещается в следующее поле в порядке вкладок. В противном случае он игнорирует ключ и позволяет управлять им. Если это кнопка, предок не предполагает знать, куда кнопка хочет управлять, потому что она будет зависеть от того, что кнопка хочет делать, когда ее «щелкают».
- На кнопках формы CHILD событие click ничего не делает, и обработка дублируется в событии KeyUp и событии MouseClick.
- Форма ANCESTOR имеет защищенный Boolean, EatKeyUp, который может быть установлен True для CHILD. Это используется, когда дочерняя форма должна отправлять MessageBox, потому что, если пользователь вводит кнопку OK в MessageBox, все еще остается оставшееся событие KeyUp, которое будет использоваться формой предка.
Хотя klugey, на самом деле это работает. Я хочу знать, есть ли лучший способ? Может быть, некоторые настройки где-то, что я могу сказать мое приложение «Введите через формы вместо табуляции»? Являются ли события, которые я использую вместо событий щелчка, лучших?
Я не пробовал это, потому что я больше не занимаюсь этой работой (ура!). Но это выглядит разумно - спасибо! – CindyH