2011-06-22 5 views
1

J'ai un bouton qui, lorsque je clique sur un bouton, affiche des informations, puis-je déclencher manuellement l'événement cliqué par un bouton dans le code? J'ai besoin de cela pour que lorsque je clique sur un autre bouton, il déclenche automatiquement cet événement.Déclenchement manuel des événements C#

+0

Pourquoi ne pas appeler juste l'autre eventhandler au lieu de déclencher l'événement lui-même? Ou vous abonner le même eventhandler aux deux événements? – CodesInChaos

Répondre

5

Un bon moyen serait de ne pas avoir de code (sauf un appel méthode/fonction) dans un gestionnaire d'événements. cela permettrait de l'appeler depuis n'importe quel endroit de votre programme.

+0

En outre, jetez un oeil à des modèles comme MVC ou MVP. Ils vous aideront à réaliser cela. – Matthias

1

Déplacez le code répondant au clic de bouton dans une fonction et appelez cette fonction à la fois dans le gestionnaire d'événements et dans l'autre.

1

Vous pouvez le faire comme ça.

private void button1_Click(object sender, EventArgs e) 
{ 
    MessageBox.Show("button1"); 
} 

private void button2_Click(object sender, EventArgs e) 
{ 
    MessageBox.Show("button2"); 
    button1_Click(sender, e); 
} 
-1

Il y a deux façons de le faire,

1 # - = Déplacer le code que vous avez écrit dans le bouton cliquez sur l'événement à une autre fonction et appeler cette fonction dans ce bouton événement click et autre bouton événement click aussi. 2 # - Pour l'événement de deuxième clic de clic, spécifiez le premier événement de clic de bouton comme gestionnaire d'événements.

3 # - appelez le gestionnaire d'événements de button1 à l'intérieur de button2.

private void button2_Click(object sender, EventArgs e) 
{ 
    button1_Click(sender, e); 
} 

Je vous conseille d'aller pour le second, si vous avez le même ensemble de fonctionnalités pour les deux boutons.

+0

le problème est que je fais des appels asynchrones à quelques fonctions et cet événement que je veux déclencher devrait se produire à la fin de celui-ci afin que je puisse spécifier le gestionnaire d'événements pour le second bouton au premier bouton. –

1

Si vous ne se soucient pas de l'expéditeur ou EventArgs, vous pouvez aussi utiliser simplement

Button1_Click(null, new EventArgs()); 
Questions connexes