2010-07-31 15 views
1

J'ai créé un contrôle utilisateur WinForms qui est un ensemble de cinq zones de liste déroulante en cascade - l'utilisateur sélectionne un élément de la zone de liste supérieure qui remplit et active le second ensemble, etc. S'il n'y a qu'une seule option dans le combo nouvellement activé, je le sélectionne automatiquement, provoquant l'activation de celui en dessous. Par conséquent, une action utilisateur unique peut se répercuter sur plusieurs combos supplémentaires.Evénements dans les zones de liste déroulante en cascade

Je déclenche un événement spécifique à chaque zone de liste déroulante. Je veux aussi élever un événement final à tout moment quoi que ce soit changements. Par exemple, l'utilisateur sélectionne une option dans le combo supérieur. Cela déclenche l'événement Combo1Changed. Si cela provoque automatiquement une sélection dans le second combo, alors je déclencherais également un événement Combo2Changed. Quand tout est fait je veux soulever un seul événement SomethingChanged.

Maintenant, je soulève les événements ComboXChanged et SomethingChanged chaque fois qu'un combo change. Mais comme une seule sélection peut faire tomber les cinq combos, elle peut provoquer des dizaines d'événements.

Je n'arrive pas à comprendre comment déterminer quand la cascade est terminée, de sorte que je ne peux déclencher les événements qu'une seule fois. Y a-t-il une astuce ou un modèle intelligent pour coder ce genre de chose?

Répondre

0

Vous pouvez résoudre ce problème en ayant une classe à laquelle toutes les listes déroulantes transmettent leur sélection et qui évoque un événement quelquechose qui encapsule les autres événements.

Après avoir dit cela, je chercherais à refaire ce ui. Avez-vous envisagé de remplacer quatre ou même toutes ces listes déroulantes par une arborescence? Ce serait beaucoup plus facile pour l'utilisateur de naviguer.

+0

C'est une bonne idée, merci – Sisiutl