Есть ли способ, чтобы основная форма могла перехватывать события, запускающие субконтроль в пользовательском элементе управления?
У меня есть пользовательский элемент управления, встроенный в основную форму моего приложения. Элемент управления содержит различные субконтроллеры, которые управляют данными, которые сами отображаются другими элементами управления в основной форме. Я бы хотел, чтобы основная форма могла быть каким-то образом проинформирована, когда пользователь меняет субконтроллеры, поэтому я мог обновлять данные и соответствующий экран в другом месте.
Сейчас я обманываю. У меня есть делегат, подключенный к фокусу-событию субконтроля. Этот делегат изменяет свойство пользовательского элемента управления, которое я не использую в другом месте (в этой причине CausesValidation). Затем у меня есть делегат, определенный в основной форме, когда изменяется свойство CausesValidation элемента управления пользователя, которое затем направляет приложение для обновления данных и отображения.
Проблема возникает из-за того, что у меня также есть набор делегатов, когда фокус покидает пользовательский контроль, потому что мне нужно проверить поля в пользовательском элементе управления, прежде чем я смогу позволить пользователю делать что-либо еще. Однако, если пользователь просто переключается между субконтролями, я не хочу проверять, потому что они могут не выполняться.
В принципе, я хочу, чтобы данные обновлялись, когда пользователь переключает субконтроллеры или выходит из пользовательского элемента управления, но не проверяет. Когда пользователь покидает элемент управления, я хочу обновить и проверить. Прямо сейчас, оставляя контроль пользователя, вызывает проверку дважды.