簡體   English   中英

如何使C#按鈕僅單擊一次並使文本框顯示兩個結果?

[英]How to make C# button click only one time and make a textbox show two result?

我寫下面的簡單代碼。 我想做到這一點: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";
        }
    }
}

阻塞線程(例如在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";
}

正如@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";
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM