Обработка событий с помощью элементов управления в пользовательских компонентах Windows Forms - PullRequest
0 голосов
/ 22 декабря 2010

У меня есть пользовательский компонент, который в основном должен проверять количество элементов управления в форме.Идея состоит в том, что программист во время разработки может выбрать список элементов управления, которые он хотел бы проверить.Во время выполнения я хотел бы обработать событие Change каждого из выбранных элементов управления и запустить процесс проверки.

Я создал свой компонент.Он имеет свойство List, в котором хранится список элементов управления, выбранных программистом во время разработки (я реализовал свой собственный ListEditor, чтобы это работало).Теперь, во время выполнения, я бы хотел подключить события Changed элементов управления в списке к методу Validate ... И вот тут я застрял.при отладке компонента во время выполнения он никогда не входит в конструкторы.Если я добавлю обработчики событий во время разработки, они не сработают во время выполнения.

есть идеи?

спасибо

1 Ответ

1 голос
/ 22 декабря 2010

Надеюсь, мой ответ немного более описательный, чем оригинальный вопрос.

В принципе, моя проблема довольно проста.У меня есть пользовательский компонент, основная обязанность которого - выполнить проверку группы элементов управления в форме, в которой находится компонент.Во время разработки пользователь выбирает эти компоненты из списка.Выбранные элементы управления хранятся / сериализуются в свойстве компонента (общий список).Во время выполнения, когда один из элементов управления в списке изменяется (т. Е. Запускается TextChanged), процедура проверки должна запускаться на всех выбранных элементах управления.

Моя проблема заключалась в том, что мне нужно было добавить обработчик событий вкаждый из выбранных элементов управления во время выполнения.Сеттер для свойства, в котором хранится список, вызывается только во время разработки (после того, как пользователь выбирает элементы управления, которые он хочет проверить), что означает, что добавление обработчика на этом этапе не будет работать.

решение?Вместо использования универсального List я использовал BindingList (не могу использовать ObservableCollection ... .net 2.0) и обрабатывал его событие ListChanged.Когда новый элемент управления добавляется в список во время выполнения, я связываю событие для этого элемента управления.Событие затем запускается, и все работает как надо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...