2016-04-15 8 views
1

Ich bin ein Windows-Formular in C# implementieren und wenn ich versuche, den Textinhalt einer Schaltfläche ändern, finde ich dieses Problem: Es zeigt nur die letzte Valorisierung der Schaltfläche Text.Ändern Sie den Textinhalt einer Schaltfläche nach 1 Sekunde

 button.Text ="Content" 
     System.Threading.Thread.Sleep(1000); 
     button.Text = ""; 

Wie kann ich dieses Problem lösen?

+1

Weil Ihre UI friert, während Sie den Schlaf zu tun, und aktualisieren sie dann - Sie müssen es ermöglichen, zu zeichnen und zu aktualisieren während des Wartens. Wie z. B. einen Timer verwenden. – BugFinder

Antwort

2

Try this:

button.Text ="Content"; 

Application.DoEvents(); // This will process all UI events currently in message queue 

System.Threading.Thread.Sleep(1000); 
button.Text = ""; 
+0

'Application.DoEvents()' wird Ereignisse weitergehen, aber dann wird Anwendung eingefroren (für eine Sekunde) –

+0

True, aber das OP scheint ATM nicht zu kümmern. Das Verwenden von Timern oder Aufgaben wäre eine bessere Lösung. –

1

können Sie versuchen, Timer so etwas wie dies mit:

button.Text = "Content"; 

    Timer timer = new Timer() { 
    Interval = 1000, 
    Enabled = true 
    }; 

    timer.Tick += (sender, e) => { 
    button.Text = ""; 

    timer.Dispose(); 
    }; 

Falls Sie wollen lambas vermeiden und explizite Entsorgung den Timer auf dem Formular platzieren.

Verwandte Themen