2010-01-06 2 views
0

Je suis un moment difficile envelopper ma tête autour de ce qu'il faut faire pour la situation suivante:Utilisation d'événements personnalisés avec des propriétés ... Plusieurs événements et seul écouteur

  • J'ai plusieurs articles dans mon application qui Je voudrais que l'utilisateur clique dessus. Certains éléments sont des classes complètement différentes.

  • Les classes répartissent les événements puis, lorsque les événements sont capturés, certaines modifications sont apportées aux propriétés de transformation d'un objet d'affichage faiblement couplé. Je veux deux classes séparées pour expédier le même type d'événement, puisque j'ai déjà une classe d'image qui dessine des images basées sur une url donnée ... Je veux que les classes expédient les événements, mais alors je pense Je veux que la différence soit détectée lorsque l'événement arrive ... c'est-à-dire, je voudrais reconnaître l'origine ou le sous-type de l'événement. Une sorte de logique si/alors suffirait.

Serait-il préférable d'avoir deux types d'événements distincts?

Comment les gens font-ils normalement cela?

Quelqu'un pourrait-il suggérer de créer une sorte de variable pour détecter le «type de sous-événement» pour l'auditeur de l'événement?

Merci pour toutes les pensées ...

Répondre

2

La propriété target de la classe Event contient la classe qui a distribué l'event.You peut interroger cette propriété dans votre gestionnaire d'événements pour reconnaître la « origine » de l'événement.

La création d'une (sous) classe distincte pour l'événement est une autre option qui fonctionnerait. Je suppose que cela dépend si c'est vraiment le même événement logique distribué par différents objets, ou des événements logiquement différents.

+0

Merci beaucoup pour cette réponse concise. Pouvez-vous élaborer sur la façon dont on pourrait distinguer un type d'événement cible sur l'autre? Souhaitez-vous généralement attribuer un nom à la cible et vérifier cela? – jml

+2

La propriété target contient une référence à l'objet réel qui a envoyé l'événement. Ainsi, si vous connaissez le type du répartiteur, vous pouvez convertir la cible en type approprié et accéder à toutes ses propriétés (par exemple, un ID si vous avez il). Ceci introduit un couplage étroit entre le gestionnaire d'événements et le répartiteur d'événements et je ne suis pas sûr que ce soit la meilleure solution dans votre cas. Pouvez-vous élaborer un peu sur ce que vous essayez d'accomplir? –

+0

Que diriez-vous d'avoir une propriété supplémentaire dans la classe Custom Event, pour des raisons d'identification? Bien sûr, l'utilisation de la propriété 'target' est également suffisante. –

Questions connexes