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
设置。也许您还想发布
标签的属性设置?