Entwickler-Ecke

Basistechnologien - Einem Event zusätzliche Infos übergeben


Pimpfson - Di 18.05.10 18:43
Titel: Einem Event zusätzliche Infos übergeben
Hi,
bin bei meinem nächsten Problem angelangt. Hierzu ein hypothetisches Beispiel.

Ich habe eine Windows Form mit mehreren Buttons und möchte mittels eins Timers, dass eine bestimmte Zeit nach dem Click der Text des Buttons verändert wird (hauptsache irgendwas mit einer Referenz auf den Button).


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
private void Button_Click(object sender, EventArgs e)
{
Timer t1 = new Timer();
t1.Intervall = 2000;
t1.Tick += new EventHandler(t1_Tick);
t1.Start();
}

Nach 2 Sekunden wird t1_Tick ausgelöst. Das Problem ist, dass ich hier keine Referenz auf das ursprüngliche Objekt, also den gedrückten Button habe.

C#-Quelltext
1:
2:
3:
4:
5:
private void t1_Tick(object sender, EventArgs e)
{
// Hier hätte ich gerne, dass der Text von dem ursprünglichen Button verändert wird
geklickterbutton.Text="Geändert";
}


Ist das irgendwie auf simple Weise zu lösen?


JüTho - Di 18.05.10 19:08

Ich kann keinen Zusammenhang sehen mit einem bestimmten Button und einer Aktion, die irgendwann später ausgelöst wird. Aber wenn du das so regeln willst, dann kannst du in einer Variablen des Formulars registrieren, welcher Button gedrückt wird.

Wie lang soll eigentlich ein Timer, der innerhalb des Button-Click erzeugt wird, aktiv sein? Üblicherweise wird er im Formular erzeugt und steht dort zur Verfügung, auch zum Stop.

Jürgen


Pimpfson - Di 18.05.10 20:00

Hi,
jedesmal wenn ich die Lösung lese, denke ich mir, man hätte auch selbst drauf kommen können ;).

Das mitm Timer stoppen wusste ich nicht bzw. habe ich missverstanden. Er wird nun im Tick Ereignis wieder gestoppt.
Hintergrund ist ein Memory Spiel. Nachdem ich 2 Karten angeklickt habe, die nicht identisch sind, wird der Timer gestartet und nach 2Sekunden werden diese wieder verdeckt. Ich wusste nicht, wie ich das lösen sollte, aber mit der globalen Variablen funktioniert es.

Danke!