C#如何在标签上使用定时器?

时间:2017-07-14 13:54:15

标签: c# timer label

我有一个标签弹出,让用户点击使用应用右下方标签复制的复制按钮。但我希望文本在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);会清除标签,但我无法弄清楚如何使用计时器实现它

2 个答案:

答案 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具体WinFormsWPF您将使用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/awaitTask.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 = "";
}