繁体   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