2010-07-06 14 views
5

Ich habe ein Windows Forms Link Label, "Aktualisieren", das die Anzeige aktualisiert.Auslösen eines "Click" -Ereignisses ohne Benutzereingabe

In einem anderen Teil meines Codes, Teil eines separaten Windows-Formulars, habe ich einen Dialog, der die in die Anzeige geladenen Daten an erster Stelle ändert. Nach dem Ausführen dieses anderen Codes werden durch Drücken von "Aktualisieren" die Daten korrekt aktualisiert.

Gibt es eine einfache Möglichkeit für das Dialogmenü, auf das "Refresh" Link Label zu klicken, nachdem es die Daten geändert hat?

Visual Studio 2008.

Antwort

9

Für Knopf wirklich einfach ist, benutzen Sie einfach:

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

public void DoRefresh() 
{ 
    // refreshing code 
} 

und DoRefresh() nennen:

button.PerformClick() 

Wie dem auch sei, ich möchte etwas tun bevorzugen statt PerformClick()


EDIT (nach OP Änderungen):

Sie noch meine zweite Lösung verwenden können, dass bei weitem vorzuziehen ist:

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

public void DoRefresh() 
{ 
    // refreshing code 
} 

Und von außerhalb der Form, Sie DoRefresh() nennen kann, wie es ist markierte Öffentlichkeit.

Aber, wenn Sie wirklich Yuriy-Faktorovich's Answer müssen programmatisch einen Klick erzeugen, nur Blick auf

+0

+1 für die Alternative zu Perform. PerformClick ist ein hackischer Ansatz im Produktionscode. Ich denke, es sollte generell auf Tests beschränkt sein. –

+0

Meine Schuld; Ich nahm an, dass es ein Button war, aber es ist eigentlich ein Link-Label, das sich wie ein Button verhält. Gibt es eine ähnliche Methode für diese? –

+0

http://msdn.microsoft.com/en-us/library/bb337532.aspx, aber wie Sie gesagt haben, ist eine separate Methode besser. –

5

Sie die PerformClick method nennen könnte. Im Allgemeinen ist es jedoch besser, wenn das Click-Ereignis der Schaltfläche eine von Ihnen geschriebene Refresh-Methode aufruft. Und das Menü nennt diese Methode auch. Ansonsten hängt Ihr Menü davon ab, dass der Button da ist.

Edit:

Ein Linklabel implementiert die IButtonControl explizit. So könnten Sie verwenden:

((IButtonControl)button).PerformClick();

0

Sie eine Methode verwenden können, Anzeige refrech, die bouton_click und die DialogBox Aufruf dieser Methode

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 
} 
Verwandte Themen