Форум программистов, компьютерный форум, киберфорум
.NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
5 / 5 / 1
Регистрация: 01.10.2008
Сообщений: 85

UserControl vs Control.Leave - событие Leave происходит только в рамках одного контейнера

30.04.2009, 15:19. Показов 1727. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Столкнулись с таким глюком.

1. Создаем UserControl
2. Кладем на него TextBox'
3. Цепляем на TextBox.Leave событие, в теле обработчика пишем строку Trace.WriteLine( 'UserControl.TextBox.Leave' )
4. Кладем UserControl на форму
5. Кладем на ту же форму ЕЩЕ ОДИН TextBox
6. Цепляем на TextBox.Leave событие, в теле обработчика пишем строку Trace.WriteLine( 'Form.TextBox.Leave' )
7. Запускаем
8. Ставим фокус на тот TextBox, который лежит на форме (а не на UserControl'е)
9. Ставим фокус на другой TextBox. В этот момент происходит событие Leave, и в окно отладки выводится строка Form.TextBox.Leave
10. Ставим фокус ОБРАТНО НА ПЕРВЫЙ TextBox. И вот ведь что интересно: событие Leave не происходит!

Немного поисследовав, мы обнаружили, что событие Leave происходит только в рамках одного контейнера. То есть, другими словами, если у нас поле ввода и кнопка Ok лежат в разных контенерах, то при нажатии на кнопку валидация, к примеру, в поле ввода не произойдет.
Кроме валидации, на фокусных событиях также висит DataBinding и еще кое-какие наши штучки.

Так вот вопрос к уважаемой общественности: как это обойти? Использовать вместо UserControl просто Control не предлагать - сам знаю.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
30.04.2009, 15:19
Ответы с готовыми решениями:

Игнорирование enter and leave events
есть ли какой-нибудь флаг игнорирования enter и leave events, чтобы не переопределять методы виджета?

Hover-leave эффект для элементов Windows.Forms
Здравствуйте. Есть форма (диалоговое окно), с 3 элементами управления (BackColor для них установлен в Transparent). Так вот, при...

LabelMouseEnter / Leave как реализовать на активном, при n-ом количестве?
Есть форма, на ней n-ое количество label, при наведении на него должен меняться цвет фона, при уходе курсора цвет меняется назад. С одним...

3
0 / 0 / 0
Регистрация: 22.03.2009
Сообщений: 40
01.05.2009, 16:18
Да, форум точно вымер...
0
1 / 1 / 5
Регистрация: 29.11.2008
Сообщений: 179
05.05.2009, 03:56
Валидацию логично повесить на событие Validating.
В текстбоксе внутри юзерконтрола работает.
0
5 / 5 / 1
Регистрация: 01.10.2008
Сообщений: 85
05.05.2009, 16:48  [ТС]
:-)))
БЛИН! Да не моя валидация-то. Я бы ее перевесил куда скажут, только бы заработало. ВСТРОЕННАЯ валидация-то не работает. Это самое событие Validating в том числе.
Ну и вообще, не в одной валидации дело.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
05.05.2009, 16:48
Помогаю со студенческими работами здесь

Static function 'void leave(char *)' declared but not defined
скорее всего у меня ошибка с инклюдами и хедер файлами вроде нагугил глобальные переменные через экстерн а как статические функции в хедер...

О двоичной совместимости версий проектов в рамках одного решения, после пересборки только одного из них
Коллеги, всем мое почтение! Есть решение для .NET, в котором мой проект ASP.NET WebForms. На инструментальной машине разработчика я...

Какое событие происходит при высвобождении Control
Привет! У меня есть одна единственная модель и у нее много ее контролов, через которые она может управляться. Контролы получают от...

Событие происходит только один раз
Простой тестовый код: namespace ConsoleApplication7 { public delegate void EHandler(object sender,string message); ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Вывод данных через динамический список в справочнике
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru