У меня есть пользовательский элемент управления на форме, который может порождать несколько немодальных дочерних форм. Дочерние формы отображают данные, которые пользователь может редактировать. Пользовательский элемент управления отображает другое представление тех же данных, и я хочу иметь возможность порождать перезагрузку данных, если пользователь внес изменения в одну или несколько дочерних форм. У меня уже есть события, настроенные для уведомления пользовательского элемента управления об изменениях данных в дочерних формах, но я не могу выяснить, какое событие (если оно существует) я должен зафиксировать на пользовательском элементе управления, чтобы определить, что оно вернуло фокус с дочерняя форма (ы). Есть ли существующее событие, которое я могу использовать здесь?
РЕДАКТИРОВАТЬ: Пример кода
(извините, мой клиент любит VB)
Похоже, что GotFocus срабатывает только при утилизации UserControl.
Я добавляю элемент управления на панель в «основной» форме следующим образом:
Dim mainControl as New MainUserControl()
Panel1.Controls.Add(mainControl)
mainControl.Doc = DocStyle.Fill
mainControl.Visible = True
mainControl.Show()
Затем код обработчика события:
Private Sub MainUserControl_GotFocus(ByVal sender as Object, ByVal e as EventArgs) Handles Me.GotFocus
MessageBox.Show("got focus")
End Sub
Затем на пользовательском элементе управления есть кнопка «Закрыть», которая отправляет событие обратно в основную форму, которая затем удаляет пользовательский элемент управления с панели и удаляет его. GotFocus
срабатывает только при вызове mainControl.Dispose()
.
РЕДАКТИРОВАТЬ 2
Я только что попытался обработать событие Enter
, но оно срабатывает только в первый раз, а не каждый раз, когда элемент управления получает фокус.