Plusieurs gestionnaires d'événements pour le même événement VB.NET
J'ai écrit deux gestionnaires d'événements pour les TextBox.Leave
événement pour un TextBox1
La raison pour cela est que le premier gestionnaire de est une commune de plusieurs TextBox.Leave
événements qui valide les valeurs, et la seconde est spécifique pour le dessus de TextBox1
qui fait un peu de calcul de valeurs.
Ma requête est ce que je peux savoir lequel des deux gestionnaires d'exécuter en premier lorsque TextBox1.Leave
qui se passe?
(Je sais que je peux supprimer le code de la commune gestionnaire spécifique pour TextBox1
, mais je souhaite savoir si il existe un moyen.)
Grâce
OriginalL'auteur yomayne | 2012-09-25
Vous devez vous connecter pour publier un commentaire.
Aussi longtemps que les gestionnaires d'événements sont ajoutés à l'aide de la
AddHandler
déclaration, les gestionnaires d'événements sont garantis d'être appelé dans le même ordre qu'ils ont été ajoutés. Si, d'autre part, vous êtes à l'aide de laHandles
modificateur sur les méthodes de gestionnaire d'événement, je ne pense pas qu'il n'y a aucun moyen d'être sûr de ce que sera l'ordre.Voici un exemple simple qui illustre l'ordre déterminé par l'ordre dans lequel
AddHandler
est appelé:Je suis sûr que c'est pas tout à fait aléatoire. L'ordre sera déterminé par le compilateur, donc une fois que l'assemblée est compilé, il faut toujours rester le même, mais je ne sais pas si oui ou non le compilateur garantit que l'ordre sera le même à chaque fois qu'il construit. Aussi, je ne sais pas si chaque version du compilateur utilise le même ordre. Je dirais que, si l'ordre des questions, utilisez le
AddHandler
instruction pour définir l'ordre explicitement dans le code. Si rien d'autre, il sera plus évident qu'il était prévu plus tard.Steven est certainement correctes en ce que la commande reste fixe. Sur l'exécution de ces gestionnaires seront générées en interne en utilisant tous les mêmes machines que la méthode AddHandler utilise, mais si elle séquences par ordre alphabétique, le code de hachage de l'ordre, de l'ordre de code source etc. serait une question pour les développeurs Visual Studio. La réponse devrait toujours être utilisé uniquement pour satisfaire la curiosité mais aussi en s'appuyant sur ce serait une erreur, il pourrait changer sans avertissement.
OriginalL'auteur Steven Doggart
Je vous recommande de le changer pour avoir un seul gestionnaire, et de détecter la zone de texte qui est à gauche:
AddHandler
? Ou puis-je ajouterHandles
aprèstxt_Leave(...)
définition ?yomayne - vous avez raison, j'ai mis à jour ma réponse
OriginalL'auteur SSS