在 wpf C# 中在运行时更改标签文本
Change label text at runtime in wpf C#
我有一个名为 lblMsg
的标签。
我想动态更改它的内容运行时。
以下是我的代码示例,并非实际代码。我的 for 循环包含很多代码,每个循环大约需要 8 到 9 秒。所以它应该在 UI.
上可见
例如
for(int i=0;i<=length;i++)
{
lblMsg.Content="Test"+i;
}
但它不起作用。有人可以帮我吗?
如果您只想显示带有递增数字的标签,您可以创建一个任务,然后使用延迟 (Thread.Sleep()) 给 UI 时间来刷新标签。
因为您不能在单独的线程中更改 UI 元素,所以您必须使用 UI 调度程序更新 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);
}
});
我有一个名为 lblMsg
的标签。
我想动态更改它的内容运行时。
以下是我的代码示例,并非实际代码。我的 for 循环包含很多代码,每个循环大约需要 8 到 9 秒。所以它应该在 UI.
上可见例如
for(int i=0;i<=length;i++)
{
lblMsg.Content="Test"+i;
}
但它不起作用。有人可以帮我吗?
如果您只想显示带有递增数字的标签,您可以创建一个任务,然后使用延迟 (Thread.Sleep()) 给 UI 时间来刷新标签。
因为您不能在单独的线程中更改 UI 元素,所以您必须使用 UI 调度程序更新 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);
}
});