2010-05-29 3 views
2

Je suis actuellement en train de construire un prototype pour un nouvel écran système, et j'utilise C# pour le construire.Événement onTextChanged pour de nombreuses zones de texte C#

La question que j'ai est, j'ai actuellement 14 boîtes de texte qui sont remplis à partir d'une condition de quelques autres contrôles sur l'écran. ces 14 zones de texte totalisent un total affiché dans une autre zone de texte. Comme ces zones de texte sont modifiables (au cas où le client souhaite augmenter la valeur) (je ne peux pas entrer dans beaucoup de détails mais ils le feront) j'ai besoin d'un événement ontextchange fabled pour que les valeurs changent.

Cependant, j'ai l'impression qu'il doit y avoir un moyen de ne pas avoir à créer 14 événements différents, est-ce que je peux avoir 1 événement qui se déclenche si l'une des 14 zones de texte est déclenchée?

grâce

Alan

Répondre

3

Oui, vous pouvez créer un événement unique - puis souscrire toutes les zones de texte au même gestionnaire d'événements dans votre classe, ce qui soulève ce seul événement.

Si les clients ont besoin de savoir qui zone de texte a changé, vous aurez besoin de réfléchir à la façon de mieux communiquer avec eux que - vous pouvez créer votre propre sous-classe de EventArgs. Sinon, un simple EventHandler ou EventHandler<EventArgs> devrait fonctionner correctement.

+0

merci cela plus les commentaires ci-dessous ont trié le problème out =) –

0

Oui, disons que vos zones de texte sont appelées textBox1, textBox2, ... si vous avez créé automatiquement la méthode "textBox1_TextChanged" pour l'événement "TextChanged" de textBox1, vous pouvez facilement utiliser cette méthode pour toutes les autres zones de texte. Par exemple, dans Designer, sélectionnez simplement le composant "textBox2", allez dans l'onglet Evénements de la fenêtre Propriétés et au lieu de créer un nouvel événement en double-cliquant dans le champ modifiable à côté de la valeur "TextChanged", utilisez simplement le menu déroulant pour sélectionner la méthode "textBox1_TextChanged" créée (automatiquement) avant.

Si vous devez décider quelle textBox a déclenché l'événement, vous pouvez utiliser le paramètre "expéditeur" de la méthode.

Questions connexes