RichTextBox在用作文本状态显示时不会不断更新



我正试图使用RichTextBox作为状态显示,但它并不是每次我附加到RichTextBox的文本时都会更新的。一个常规的多行TextBox在每次添加新文本时都会更新,但我更喜欢使用RichTextBox。是否有某种属性需要设置才能查看更新?

更新:此外,如何在每次显示消息时自动向下滚动?

就像我说的,如果我用TextBox替换RichTextBox,我可以看到每一行写出来的消息,它也会自动向下滚动到底部,显示最新添加的文本。

void UpdateStatus(string textMessage)
{
  if (InvokeRequired)
  {
    BeginInvoke(new MethodInvoker(() => UpdateStatus(textMessage)));
    return;
  }
  richTextBox.AppendText(textMessage + Environment.NewLine);
}

是一个简单快捷的解决方案

Application.DoEvents()

要使RichTextBox自动滚动,请使用ScrollToCaret方法:

richTextBox.AppendText("Hello");    
richTextBox.ScrollToCaret();

您的代码看起来应该正常工作,请确保检查正确的InvokeRequired标志:

void UpdateStatus(string textMessage)
{
  if (richTextBox.InvokeRequired)
  {
    richTextBox.Invoke(new MethodInvoker(() => UpdateStatus(textMessage)));
    return;
  }
  richTextBox.AppendText(textMessage + Environment.NewLine);
}

最新更新