如何从原始文本显示更改的文本几秒钟?

时间:2015-04-17 06:33:33

标签: c# wpf

首先说我的标签框中的文字是" ABC",当我点击一个按钮时,标签框中的文字将变为" DEF"并显示两秒钟,两秒后它回到" ABC"再次。它与计时器或故事板有关吗?有什么建议吗?

4 个答案:

答案 0 :(得分:2)

这是没有计时器的一种方法。您可以捕获标签的当前文本,将其更改为新文本,然后使用后台工作程序来“睡眠”#34;两秒钟然后改回文字:

private void button1_Click(object sender, EventArgs e)
{
    // To keep the user from repeatedly pressing the button, let's disable it
    button1.Enabled = false;

    // Capture the current text ("ABC" in your example)
    string originalText = label1.Text;

    // Create a background worker to sleep for 2 seconds...
    var backgroundWorker = new BackgroundWorker();
    backgroundWorker.DoWork += (s, ea) => Thread.Sleep(TimeSpan.FromSeconds(2));

    // ...and then set the text back to the original when the sleep is done
    // (also, re-enable the button)
    backgroundWorker.RunWorkerCompleted += (s, ea) =>
    {
        label1.Text = originalText;
        button1.Enabled = true;
    };

    // Set the new text ("CDE" in your example)
    label1.Text = "CDE";

    // Start the background worker
    backgroundWorker.RunWorkerAsync();
}

答案 1 :(得分:0)

将原始值保存为某处的临时字符串,然后启动计时器。当计时器事件(tick)触发时,使用它来检索旧值。

那应该足以让你开始了:)

答案 2 :(得分:0)

根据您的问题标签,您使用C#和WPF应用程序。我要使用Timer对象。

假设您的Label对象名为Label1。这将是一个功能体,可以放入您应用的load()功能:

Label1.text = "ABC";
Timer1.duration = 2000;
Timer1.enabled = TRUE;

此外,如果您的WPF应用程序有某种方式来实现调用函数来处理Timer1的{​​{1}}事件的方法,请将这样的内容放在:

Tick

这样,它每两秒交替一次。

我可能错了,但我不经常在C#上使用WPF应用程序,我在Windows窗体应用程序中使用VB。

答案 3 :(得分:0)

执行此操作的一种非常简单的方法是在按钮处理程序中调用类似的内容:

        private async void changeText() 
    {
        label1.Text = "DEF";
        await Task.Delay(2000);
        label1.Text = "ABC";
    }