Происходит событие потери фокуса. Как обойти?

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

Uranium-238
Начинающий
Начинающий
 
Сообщения: 7
Зарегистрирован: 28.05.2008 (Ср) 11:25

Происходит событие потери фокуса. Как обойти?

Сообщение Uranium-238 » 28.05.2008 (Ср) 11:33

Может быть кто сталкивался с потерей фокуса контролом (например кнопкой). За ответ зараннее благодарен. Закинул на форму несколько кнопок (допустим 9 и расположил их в виде таблицы 3х3). При нажатии клавиш Up, Down, Left, Right происходит перемещение фокуса по TabIndex. Как и где такое поведение можно отключить? Если взять текстбокс - он не теряет фокуса при нажатии данных клавишь. Не думаю что это связано с наследованием контролов, но найти ничего не могу. Если предположим задача состоит в том чтобы фокус перемещался по кнопкам в соответствии с нажатой клавишей.

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 28.05.2008 (Ср) 12:44

TabStop, TabIndex смотри, если по собственной клавише фокус переводить , то надо контролировать событие KeyPress на форме

Uranium-238
Начинающий
Начинающий
 
Сообщения: 7
Зарегистрирован: 28.05.2008 (Ср) 11:25

Сообщение Uranium-238 » 29.05.2008 (Чт) 11:09

TabStop не работает для этих клавишь, а событие KeyPress их не отслеживает. Можно отследить событием PreviewKeyDown для самой кнопки (форма не отслеживает), но там тоже тупик. Если я в этом событии присваиваю фокус кнопке "btn_5", то фокус соскакивает с "btn_5" на следующий по TabIndex или предыдущий (зависит от нажатой клавиши). Остается TabIndex??? Это прийдется наверное прогонять цикл каждый раз по изменению его значения для каждой кнопки... или вычислять TabIndex конечной кнопки и отнимать или прибавлять единицу....весьма странный подход :shock:

ndemidov
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 285
Зарегистрирован: 14.11.2007 (Ср) 16:23
Откуда: Earth planet

Сообщение ndemidov » 29.05.2008 (Чт) 15:02

Происходит событие потери фокуса. Как обойти?

Для ЭУ событие Validating до выхода из проц. обр. соб. e.Cancel = True.

Williams
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1280
Зарегистрирован: 06.05.2008 (Вт) 18:35
Откуда: System.Reflection.Williams (увидел себя в зеркале :))

Сообщение Williams » 31.05.2008 (Сб) 19:20

Uranium-238

Код: Выделить всё
Private Sub SetFocusBack (ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.LostFocus, Button2.LostFocus, Еще_Один_Button.LostFocus....
Sender.Focus()
End Sub


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0

    TopList