C# 更新标签文本后仍显示上一个文本
我正在尝试更新标签文本。当原始文本包含多行并且我用一行更新文本时,即使文本在顶行更新,旧的多行仍然可见。这里有一个例子。我怎样才能解决这个问题C# 更新标签文本后仍显示上一个文本,c#,winforms,C#,Winforms,我正在尝试更新标签文本。当原始文本包含多行并且我用一行更新文本时,即使文本在顶行更新,旧的多行仍然可见。这里有一个例子。我怎样才能解决这个问题 PhotoText.Text = "Testing Some\nCode Out\nRight Now!"; //This shows 3 lines PhotoText.Refresh(); Thread.Sleep(1000); PhotoText.Text = "New Text!"; //This shows 1 lines PhotoT
PhotoText.Text = "Testing Some\nCode Out\nRight Now!"; //This shows 3 lines
PhotoText.Refresh();
Thread.Sleep(1000);
PhotoText.Text = "New Text!"; //This shows 1 lines
PhotoText.Refresh();
Thread.Sleep(1000);
试着用绳子做
PhotoText.Text = "Testing Some\nCode Out\nRight Now!"; //This shows 3 lines
PhotoText.Refresh();
Thread.Sleep(1000);
string phototext="New Text!";
PhotoText.Text = phototext; //This shows 1 lines
PhotoText.Refresh();
Thread.Sleep(1000);
试着打电话
this.Refresh();
Application.DoEvents();
在每次更新之间。您不应该阻止UI线程。分别运行长时间运行的任务:
private void button46_Click(object sender, EventArgs ee)
{
new Task(() =>
{
this.Invoke(new EventHandler((o, e) => PhotoText.Text = "Testing Some\nCode Out\nRight Now!"));
Thread.Sleep(1000);
this.Invoke(new EventHandler((o, e) => PhotoText.Text = "New Text!"));
Thread.Sleep(1000);
}, TaskCreationOptions.LongRunning).Start();
}
这是一个表单,调用在UI线程上运行PhotoText.Text=…
。您也可以使用this.BeginInvoke
即使不使用EndInvoke
您使用的是什么平台?WinForms,WPF,UWP?我在使用WinForms这段代码叫什么?当我单击按钮调用它时,它会工作。您已将标签的AutoSize属性设置为True。文本越短,标签越小,只有在标签的父级重新绘制自身时,才能对旧像素进行过度绘制。因此,您还需要PhotoText.Parent.Update()。只要不挂起UI线程,您就不会遇到这样的问题。您的代码完全可以在我的WinForm
中找到,使用默认Label
设置。也许您还想发布标签的属性设置?