我有一个标签弹出,让用户点击使用应用右下方标签复制的复制按钮。但我希望文本在2秒左右后消失。然后再回来,如果他们再次点击复制,这是我的复制按钮代码:
private void copyBtn_Click(object sender, EventArgs e)
{
labelCopied.Text = "Copied to Clipboard!";
Clipboard.SetText(btcTxtBox.Text);
SystemSounds.Hand.Play();
}
我知道labelCopied.Text.Remove(0);会清除标签,但我无法弄清楚如何使用计时器实现它
答案 0 :(得分:2)
使用Timer
:
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();
}
修改强>
Task.Delay
在内部使用Timer
。因此,如果您不介意最小的性能开销,Task.Delay
就可以了。此外Task.Delay
更具可移植性,因为Timer
具体WinForms
(WPF
您将使用DispatcherTimer
)
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 = "";
}
答案 1 :(得分:1)
假设使用WinForms,请将async/await与Task.Delay()一起使用,如下所示:
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 = "";
}