如何使C#按钮只点击一次并使文本框显示两个结果?

时间:2017-07-13 01:21:02

标签: c# wpf

我在下面写下简单的代码。我想让这件事发生:  1.单击按钮。  2.显示第一个字符串。  3.等待3秒钟。  4.显示第二个字符串。 但是使用这段代码,我只能在点击按钮后等待3秒后看到第二个字符串。我看不到第一个字符串。有没有办法让这种情况发生?

namespace clicktest
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {

        public MainWindow()
        {
            InitializeComponent();
        }
        private void button_Click(object sender, RoutedEventArgs e)
        {
            this.textBox.Text = "Show 1st time";
            Thread.Sleep(3000);
            this.textBox.Text = "Show 2nd time";
        }
    }
}

2 个答案:

答案 0 :(得分:1)

阻止线程(例如在使用Thread.Sleep时)在WPF中阻止GUI刷新。

相反,您可以使用不会阻止该帖子的await Task.Delay

private async void button_Click(object sender, RoutedEventArgs e)
{
    this.textBox.Text = "Show 1st time";
    await Task.Delay(3000);
    this.textBox.Text = "Show 2nd time";
}

答案 1 :(得分:1)

正如@Alexander Higgins所说,您可以使用 等待Task.Delay ,但您必须将 async 类型添加到您的方法中,像这样:

private async void button_Click(object sender, RoutedEventArgs e)
{
    this.textBox.Text = "Show 1st time";
    await Task.Delay(3000);
    this.textBox.Text = "Show 2nd time";
}