在WPF C#中在运行时更改标签文本

时间:2018-11-23 06:47:32

标签: c# wpf label wpf-controls

我有一个标签叫Cbx_name(i) = vbNullString

我想动态更改其内容运行时。

下面是我的代码示例,而不是实际代码。我的for循环包含许多代码,每个循环大约需要8到9秒。因此它应该在UI上可见。

例如。

lblMsg

但是它不起作用。有人可以帮我吗?

1 个答案:

答案 0 :(得分:0)

如果只想显示带有递增编号的标签,则可以创建一个Task,然后使用延迟(Thread.Sleep())来给UI时间刷新标签。

由于不能在单独的线程中更改UI元素,因此必须使用UI Dispatcher更新UI。

示例代码

var length = 1000;

Task.Run(() =>
{
    for (int i = 0; i <= length; i++)
    {
        Application.Current.Dispatcher.BeginInvoke(new Action(() => { 
            lblMsg.Content = "Test" + i;
        }), DispatcherPriority.Render);
        Thread.Sleep(100);
    }
});