2017-07-14 1 views
0

Ich habe ein Etikett Pop-up lassen den Benutzer, wenn sie auf die Schaltfläche Kopieren, dass es kopiert wurde mit einem Etikett in der rechten unteren Ecke der App klicken. Aber ich möchte, dass der Text nach etwa zwei Sekunden verschwindet. Dann wieder kommen, wenn sie wieder auf Kopieren, das ist meine Kopie Tasten Code:C# Wie tippe ich Timer auf Etiketten?

 private void copyBtn_Click(object sender, EventArgs e) 
    { 
     labelCopied.Text = "Copied to Clipboard!"; 
     Clipboard.SetText(btcTxtBox.Text); 
     SystemSounds.Hand.Play(); 

    } 

Ich weiß labelCopied.Text.Remove (0); würde das Etikett löschen, aber ich kann nicht herausfinden, wie es implementieren einen Timer

Antwort

2

Verwenden Sie ein Timer für diese Verwendung:

private void copyBtn_Click(object sender, EventArgs e) 
{ 
    labelCopied.Text = "Copied to Clipboard!"; 
    Clipboard.SetText(btcTxtBox.Text); 
    SystemSounds.Hand.Play(); 

    Timer t = new Timer(); 
    t.Interval = 2000; //2000 milliseconds = 2 seconds 
    t.Tick += (a,b) => 
    { 
     labelCopied.Text = string.Empty; 
     t.Stop(); 
    }; 

    t.Start(); 
} 

EDIT

Task.Delay verwendet ein Timer intern. Also, wenn es Ihnen nichts ausmacht, ein minimaler Performance Overhead, Task.Delay ist gut zu gehen. Zusätzlich ist Task.Delay mehr tragbar, da TimerWinForms spezifisch ist (In WPF würden Sie DispatcherTimer verwenden)

private async void copyBtn_Click(object sender, EventArgs e) 
{ 
    labelCopied.Text = "Copied to Clipboard!"; 
    Clipboard.SetText(btcTxtBox.Text); 
    SystemSounds.Hand.Play(); 
    await Task.Delay(2000); 
    labelCopied.Text = ""; 
} 
+0

Danke, das würden Sie es empfehlen ist WinForms natürlich. Timer oder die Aufgabe. Verzögerung? –

+0

'Task.Delay' verwendet intern einen' Timer'. Also, wenn Sie einen minimalen Leistungsaufwand nicht kümmern, ist 'Task.Delay' gut zu gehen. Außerdem ist 'Task.Delay' portabler, da' Timer' '' WinForms' 'ist (In 'WPF' würden Sie' DispatcherTimer' verwenden) –

+0

Vielen Dank, viel besser als Thread-Schlaf, da es die Anwendung pausiert. –

1

Unter der Annahme, WinForms, verwenden async/await mit Task.Delay(), wie folgt aus:

private async void copyBtn_Click(object sender, EventArgs e) 
{ 
    labelCopied.Text = "Copied to Clipboard!"; 
    Clipboard.SetText(btcTxtBox.Text); 
    SystemSounds.Hand.Play(); 
    await Task.Delay(2000); 
    labelCopied.Text = ""; 
}