Autor Beitrag
Pimpfson
Hält's aus hier
Beiträge: 8



BeitragVerfasst: Di 18.05.10 18:43 
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).

ausblenden 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.
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: 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!