Commande de déclenchement de l'événement par programmation
Supposer que j'ai un WinFoms projet. Il y a juste un bouton (par exemple,button1
).
La question est: est-il possible de déclencher le ButtonClicked
de l'événement via le code sans vraiment en cliquant sur elle?
- depuis que cette question est encore en vie(j'ai même obtenu une certaine réputation pour elle 🙂 ), je tiens à mettre ici un petit avertissement: si vous pensez que vous avez besoin de faire quelque chose comme ceci dans votre code que presque sûr que vous faites quelque chose de mal. Donc moi, Vous avez probablement une mauvaise conception et vous feriez mieux de passer un peu de temps, en remettant en question ce que vous faites et pourquoi.
- En fait je pense que c'est une question pertinente, j'ai voulu créer un menu déroulant qui génériquement inclus tous les éléments à partir d'une barre d'outils ainsi que le menu contextuel avait déjà, le PerformClick méthode mentionnée par itsme86 aidé 🙂
- En réponse à l'avertissement, c'est effectivement très pertinent pour l'INTERFACE utilisateur de test. Souvent, vous avez besoin de "déclencher un clic", sans en cliquant sur le test automatique.
Vous devez vous connecter pour publier un commentaire.
Bouton contrôles ont un PerformClick() la méthode que vous pouvez appeler.
L' .NET framework utilise un modèle où, pour chaque événement
X
il existe une méthodeprotected void OnX(EventArgs e) {}
que soulève l'événementX
. Voir ce Article Msdn. Pour déclencher un événement à partir de l'extérieur de la classe de déclaration, vous aurez pour dériver la classe et d'ajouter une méthode wrapper. Dans le cas deButton
il devrait ressembler à ceci:Vous pouvez simplement appeler la fonction de gestionnaire d'événement directement et spécifier
null
pour l'expéditeur etEventArgs.Empty
pour les arguments.Ou, plutôt, vous souhaitez déplacer la logique de la
ButtonClicked
événement dans sa propre fonction, et ensuite votre gestionnaire d'événement et les autres codes que vous avez serait à son tour appel de la nouvelle fonction.La dernière méthode a l'avantage de vous laisser vous séparer de votre entreprise et la logique de l'INTERFACE utilisateur. Vous ne devriez jamais avoir aucune logique métier de votre contrôle des gestionnaires d'événements.
Oui, il suffit d'appeler la méthode de la façon dont vous appelez les autres. Par exemple:
Mais si vous avez à faire quelque chose comme ceci peut-être que c'est mieux de mettre le code que vous avez en vertu de l'événement sur une nouvelle méthode ?
Pourquoi ne pas vous venez de mettre votre code d'événement dans une Méthode. Alors que l'Événement d'exécuter la méthode. De cette façon, si vous avez besoin d'exécuter le même code que l'Événement se lève, vous pouvez, mais il suffit juste d'appeler la "Méthode".
Sens? Maintenant, l'événement "Click" ET de n'importe où dans le code, vous pouvez déclencher le même code que l'événement "Click".
Ne déclenchent pas le cas, appelez la méthode que l'événement appels. 😉
utiliser une boucle for pour appeler l'événement button_click
nous supposons au moins une fois, vous devez cliquez sur le bouton