窗口显示后如何动态更改标签中的文本

时间:2019-04-04 09:00:52

标签: c# wpf visual-studio

如何在打开窗口后动态更改标签中的文本? (窗口打开,显示文本1,几秒钟后变为文本2 ...)

public MainWindow()
{
    InitializeComponent();
    System.Threading.Thread.Sleep(5000);
    lblText.Content = "Sent for analysis";
    System.Threading.Thread.Sleep(5000);
    lblText.Content = "Analysis in progress";
    System.Threading.Thread.Sleep(5000);
    lblText.Content = "Analysis results";
}

此刻,仅当执行所有操作且仅显示最后一个文本时,窗口才会显示。

这是示例代码。我的程序中有一个API,正在等待响应。仅在执行完全部代码以及Api将如何响应(15秒后)后,窗口才会显示。

我希望它在Net Framework 3.0中工作。

1 个答案:

答案 0 :(得分:-2)

在构造函数中放置内容会阻止窗口加载。要快速破解,请将内容移至OnContentRendered。 还进行异步调用并删除Thread.Sleep  布尔_shown;

protected override void OnContentRendered(EventArgs e)
{
    Task.Delay(5000);
    lblText.Content = "Sent for analysis";
    Task.Delay(5000);
    lblText.Content = "Analysis in progress";
    Task.Delay(5000);
    lblText.Content = "Analysis results";
}

注意:即使此方法可行,我也不建议这样做。我建议花一些时间来了解WPF,然后尝试使用WPF方式。通过适当的代码设计(使用async-await和一些带有零代码后置的MVVM)。