![]() |
Модераторы: gambit, Partizan |
![]() ![]() ![]() |
|
markowww |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 66 Регистрация: 27.2.2003 Где: В Вологде-где Репутация: нет Всего: нет |
На форме имеется TextBox. Требуется при получении/потере им фокуса изменять свойство BorderStyle
Кажется, что все просто. Но! При реализации события Leave контрол перестает терять фокус по Tab/Shift+Tab. Как показала отладка, если убрать смену BorderStyle, то при использовании Tab/Shift+Tab события происходят так, как и должны, т.е. : Enter Leave (Нажатие клавиш) В противном случае получается следующая последовательность: Enter Leave (Нажатие клавиш) Enter Enter Leave Enter Подскажите, где я не прав, как исправить или сделать подругому? |
|||
|
||||
DVariuS |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 200 Регистрация: 10.2.2009 Где: Ukraine Репутация: нет Всего: 8 |
markowww, все дело в разной последовательности генерации событий: http://msdn.microsoft.com/ru-ru/library/sy...trol.leave.aspx
Решить проблему можно так:
|
|||
|
||||
Bishop |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 188 Регистрация: 3.6.2005 Где: Минск, Беларусь Репутация: 2 Всего: 16 |
markowww, можно так
|
|||
|
||||
DVariuS |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 200 Регистрация: 10.2.2009 Где: Ukraine Репутация: нет Всего: 8 |
Bishop, согласен, а то я наворотил
![]() |
|||
|
||||
markowww |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 66 Регистрация: 27.2.2003 Где: В Вологде-где Репутация: нет Всего: нет |
Bishop, DVariuS
Про SelectNextControl я думал, но почему-то у меня не вышло. Вечером попробую. |
|||
|
||||
markowww |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 66 Регистрация: 27.2.2003 Где: В Вологде-где Репутация: нет Всего: нет |
Два момента:
1. Вызов SelectNextControl должен находится перед сменой стиля, иначе программа уходит в бесконечный цикл 2. Один из параметров - направление поиска следующего контролла. Если оставить в таком виде, то все работает по Tab и не работает по Shift + Tab, точнее листает не в том направлении. DVariuS, самое интересное, что в мсдн в примере для события Leave используется изменение внешнего вида контролла, поэтому я сначала не придал значениея разной последовательности генерации событий. В итоге Reflector показал, что при смене стиля в конечном итоге вызывается Invalidate для всего контролла, что и ведет ко всем проблемам. Видимо, придется делать обходным путем. |
|||
|
||||
DVariuS |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 200 Регистрация: 10.2.2009 Где: Ukraine Репутация: нет Всего: 8 |
markowww, похоже в данном случае лучший вариант - наследовать от TextBox
![]() |
|||
|
||||
markowww |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 66 Регистрация: 27.2.2003 Где: В Вологде-где Репутация: нет Всего: нет |
В принципе, можно сварганить TextBox, окруженный, например, прямоугольником. Но в данном случае задача не требует таких затрат. Таких TextBox'ов на форме немного, можно перебрать в ручную. |
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Разработка Windows Forms | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |