Происходит событие потери фокуса. Как обойти? (VB.NET)
Может быть кто сталкивался с потерей фокуса контролом (например кнопкой). За ответ зараннее благодарен. Закинул на форму несколько кнопок (допустим 9 и расположил их в виде таблицы 3х3). При нажатии клавиш Up, Down, Left, Right происходит перемещение фокуса по TabIndex. Как и где такое поведение можно отключить? Если взять текстбокс - он не теряет фокуса при нажатии данных клавишь. Не думаю что это связано с наследованием контролов, но найти ничего не могу. Если предположим задача состоит в том чтобы фокус перемещался по кнопкам в соответствии с нажатой клавишей.
Цитата: Uranium-238
Если предположим задача состоит в том чтобы фокус перемещался по кнопкам в соответствии с нажатой клавишей.
Вам нужно обрабатывать событие OnKeyDown требуемых компонент. После обработки клавиш Up Down и др. устанавливаете свойство Handled параметра KeyEventArgs e в true.
Цитата: Uranium-238
Может быть кто сталкивался с потерей фокуса контролом (например кнопкой). За ответ зараннее благодарен. Закинул на форму несколько кнопок (допустим 9 и расположил их в виде таблицы 3х3). При нажатии клавиш Up, Down, Left, Right происходит перемещение фокуса по TabIndex. Как и где такое поведение можно отключить? Если взять текстбокс - он не теряет фокуса при нажатии данных клавишь. Не думаю что это связано с наследованием контролов, но найти ничего не могу. Если предположим задача состоит в том чтобы фокус перемещался по кнопкам в соответствии с нажатой клавишей.
Это нормальное поведение, представьте, что при нажатии Left в техкстбоксе, курсор перемещался бы не на соседний символ, довольно странно, для кнопки это же нормально. Может как-то и можно изменить, но мне видится только один выход - перехват события KeyDown
Событие "Validating" для кнопки происходит уже после автоматического перемещения фокуса, в нем и присваиваем фокус нужному контролу. :)