C#如何使用标签上的计时器?

C#如何使用标签上的计时器?,c#,timer,label,C#,Timer,Label,我有一个弹出的标签,当用户单击复制按钮时,它可以使用应用程序右下角的标签进行复制。但我希望文本在2秒左右后消失。如果再次单击“复制”,请返回,这是我的复制按钮代码: private void copyBtn_Click(object sender, EventArgs e) { labelCopied.Text = "Copied to Clipboard!"; Clipboard.SetText(btcTxtBox.Text);

我有一个弹出的标签,当用户单击复制按钮时,它可以使用应用程序右下角的标签进行复制。但我希望文本在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);将清除标签,但我不知道如何使用计时器实现它。为此,请使用
计时器:

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
在内部使用
计时器。因此,如果您不介意最小的性能开销,
Task.Delay
是一个不错的选择。另外,
Task.Delay
更便于携带,因为
Timer
是特定于
WinForms
的(在
WPF
中,您将使用
dispatchermer


为此使用
计时器

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
在内部使用
计时器。因此,如果您不介意最小的性能开销,
Task.Delay
是一个不错的选择。另外,
Task.Delay
更便于携带,因为
Timer
是特定于
WinForms
的(在
WPF
中,您将使用
dispatchermer

假设使用WinForms,请与一起使用,如下所示:

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 = "";
}
假设使用WinForms,请与一起使用,如下所示:

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 = "";
}

谢谢你,你推荐哪一种是WinForms Natural。计时器或任务。延迟?
任务。延迟
在内部使用
计时器
。因此,如果您不介意最小的性能开销,
Task.Delay
是一个不错的选择。另外,
Task.Delay
更具可移植性,因为
Timer
是特定于
WinForms
的(在
WPF
中,您会使用
dispatchermer
)谢谢,这比线程睡眠暂停应用程序要好得多。谢谢,您会推荐哪个是WinForms呢。计时器或任务。延迟?
任务。延迟
在内部使用
计时器
。因此,如果您不介意最小的性能开销,
Task.Delay
是一个不错的选择。另外,
Task.Delay
更具可移植性,因为
Timer
是特定于
WinForms
的(在
WPF
中,您将使用
dispatchermer
),谢谢,这比线程睡眠暂停应用程序要好得多。