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



我在下面写简单的代码。我想实现这一点: 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";
}
}
}

正如@Alexander Higgins所说,您可以使用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";
}

在 WPF 中阻止线程(例如使用Thread.Sleep时(会阻止 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";
}

最新更新