Ich verwende einen Timer, um ein Etikett zurückzusetzen, das ich als Warnfeld verwende. Im Grunde genommen, wenn der Benutzer etwas tut (genauer gesagt, etwas schief geht, z. B.: Er verwendet ein Wort, das nicht vom Programm erkannt wird), fängt dies, was schief gegangen ist früh und gibt ihm zurück, was passiert ist, so dass er die Eingabe ändern kann.
Das Zurücksetzen löscht die Beschriftung nach 5 Sekunden, um zu verhindern, dass er etwas wie "Bitte keine chinesischen Schriftzeichen verwenden" sieht und vielleicht noch denkt, dass ein alter Fehler immer noch ansteht. Dies ist, was ich bekam das Lesen der invoke (da ich höre begininvoke erfordert ein endinvoke, wählte ich invoke).
private void lblWrn_TextChange(object sender, EventArgs e)
{
Timee = new System.Timers.Timer(5000);
Timee.Elapsed += new ElapsedEventHandler(timerClearWrn);
Timee.Enabled = true;
}
string empty = "";
private void timerClearWrn(object sender, ElapsedEventArgs elapsed)
{
lblWrn.Invoke(new Action<Label>(lblWrn), new object[] { lblWrn, "" });
}
Ich bin mir nicht ganz sicher, was ich falsch mache, und wenn ich mir Beispiele ansehe, kann ich nicht herausfinden, welchen Teil ich ändern muss. Kann mir jemand den Fehler erklären oder ein bisschen mehr dazu sagen?