C# Windows Forms - Button farbe nach klick ändern mit zeitlicher verzögerung?
Hallo,
ich mache gerade in C# ein Button, der die Farbe von grau auf Grün ändern soll wenn er geklickt wurde, und nach 3 sekunden soll sich die farbe wieder auf grau zurücksetzen.
Ich hab noch nicht so viel Erfahrung mit Windows Forms, sondern nur mit Console und hab dabei festgestellt das System.Threading.Thread.Sleep(1000); nicht so wie sie soll in Windows Forms funktioniert.
Habt ihr eine Idee wie ich einen Art zeitlichen Abstand einprogrammieren kann?
2 Antworten
Moin,
es gibt Timer, die asynchron laufen.
Einfach einen Timer (im Designer oder so) definieren und den Interval auf die gewünschte Zeit stellen;
private void button1_Click(object sender, EventArgs e)
{
timer1.Start();
}
private void timer1_Tick(object sender, EventArgs e)
{
button1.BackColor = Color.Green;
timer1.Stop();
}
LG
private async void button1_Click(object sender, EventArgs e)
{
await Task.Delay(3000);
button1.BackColor = Color.Green;
}
Das funktioniert auch.
Dadurch friert das Programm auch nicht ein. Nicht vergessen den async nach dem private zu setzen.
Ist nur eben tiefer im Thema als ein Timer.
da du aus dem Timer-Thread keine über den GUI-Thread erzeugten Objekte ändern kannst.
Öh doch, kannst du.
Gibt es aber nicht einfache Art etwas zu verzögern? Bei der Console war es ja nur eine Zeile Code und in Windows Forms ist es etwas mehr aufwendiger