События в каскадных списках - PullRequest
1 голос
/ 31 июля 2010

Я создал пользовательский элемент управления WinForms, представляющий собой набор из пяти каскадных полей со списком - пользователь выбирает что-то из верхней комбинации, которая затем заполняет и включает вторую комбинацию и так далее. Если в только что включенном комбо есть только одна опция, я автоматически выбираю ее, в результате чего под ней становится активной. Следовательно, одно пользовательское действие может пройти через несколько дополнительных комбинаций.

Я поднимаю событие, специфичное для каждого поля со списком. Я также хочу поднять итоговое событие в любое время что-нибудь изменения. Например, пользователь выбирает опцию в верхней комбо. Это вызывает событие Combo1Changed. Если это автоматически вызывает выбор во втором комбо, я бы также вызвал событие Combo2Changed. Когда все это будет сделано, я хочу вызвать одно событие SomethingChanged.

Прямо сейчас я поднимаю события ComboXChanged и SomethingChanged каждый раз, когда меняется комбинация. Но поскольку один выбор может каскадно объединить все пять комбинаций, это может привести к возникновению десятков событий.

Я не могу понять, как определить, когда каскад закончился, чтобы я мог инициировать события только один раз. Есть ли хитрый трюк или шаблон для кодирования такого рода вещей?

1 Ответ

0 голосов
/ 31 июля 2010

Вы можете решить эту проблему, имея класс, в который все поля со списком передают события, измененные для выбора, и который вызывает одно событие, изменяющее что-то, которое инкапсулирует другие события.

Сказав это, я посмотрю наРедизайн этого интерфейса.Рассматривали ли вы замену четырех или даже всех этих выпадающих списков в виде дерева?Это было бы намного проще для пользователя.

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