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

时间:2012-02-25 01:49:22

标签: c# winforms textbox richtextbox

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

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

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

void UpdateStatus(string textMessage)
{
  if (InvokeRequired)
  {
    BeginInvoke(new MethodInvoker(() => UpdateStatus(textMessage)));
    return;
  }

  richTextBox.AppendText(textMessage + Environment.NewLine);
}

3 个答案:

答案 0 :(得分:2)

简单快捷的解决方案

Application.DoEvents()

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

您的代码看起来它应该正常工作,请确保选中正确的InvokeRequired标记:

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

  richTextBox.AppendText(textMessage + Environment.NewLine);
}