2010-07-06 6 views
5

J'ai une étiquette de lien Windows Forms, "Actualiser", qui actualise l'affichage.Déclenchement d'un événement "Click" sans entrée utilisateur

Dans une autre partie de mon code, qui fait partie d'un formulaire Windows séparé, j'ai une boîte de dialogue qui change les données chargées dans l'affichage en premier lieu. Après l'exécution de cet autre code, en appuyant sur "Actualiser" met à jour les données correctement.

Y a-t-il un moyen simple pour que le menu de dialogue «clique» sur l'étiquette de lien de «rafraîchissement» après qu'il ait fini de modifier les données?

l'aide de Visual Studio 2008.

Répondre

9

Pour bouton est très simple, il suffit d'utiliser:

button.PerformClick() 

Quoi qu'il en soit, je préfère faire quelque chose comme:

private void button_Click(object sender, EventArgs e) 
{ 
    DoRefresh(); 
} 

public void DoRefresh() 
{ 
    // refreshing code 
} 

et appelez DoRefresh() au lieu de PerformClick()


EDIT (en fonction des changements OP):

Vous pouvez toujours utiliser ma deuxième solution, qui est de loin préférable:

private void linkLabel_Click(object sender, EventArgs e) 
{ 
    DoRefresh(); 
} 

public void DoRefresh() 
{ 
    // refreshing code 
} 

Et en dehors de la forme, vous pouvez appeler DoRefresh() comme il est public marqué.

Mais, si vous avez vraiment besoin de générer un programme clic, il suffit de regarder à Yuriy-Faktorovich's Answer

+0

+1 pour l'alternative à PerformClick. PerformClick est une approche hackish dans le code de production. Je pense que cela devrait généralement se limiter aux tests. –

+0

Ma faute; J'ai supposé que c'était un bouton, mais c'est en fait une étiquette de lien qui agit comme un bouton. Existe-t-il une méthode similaire pour ceux-là? –

+0

http://msdn.microsoft.com/en-us/library/bb337532.aspx, mais comme vous l'avez dit, une méthode séparée est préférable. –

5

Vous pouvez appeler le PerformClick method. Mais généralement, il est préférable d'avoir l'événement Click du bouton appeler une méthode Refresh que vous écrivez. Et le menu appelle aussi cette méthode. Sinon, votre menu dépend de la présence du bouton.

Edit:

Un LinkLabel implémente explicitement le IButtonControl. Donc, vous pouvez utiliser:

((IButtonControl)button).PerformClick();

0

vous pouvez utiliser une méthode pour refrech affichage, le bouton_click et l'appel DialogBox cette méthode

public void refrechDate() 
{ 
} 


private void button_click(...) 
{ 
    refrechData(); 
} 
0
private void MyMethod() 
{ 
    // ... 

    // calling refresh 
    this.button1_Click(this.button1, EventArgs.Empty); 

    // ... 
} 

private void button1_Click(object sender, EventArgs e) 
{ 
    // refresh code 
} 
Questions connexes