RichTextBox не обновляется постоянно при использовании в качестве отображения статуса текста - PullRequest
1 голос
/ 25 февраля 2012

Я пытаюсь использовать RichTextBox в качестве отображения статуса, но он не обновляется каждый раз, когда я добавляю текст RichTextBox. Обычный многострочный TextBox будет обновляться каждый раз, когда к нему добавляется новый текст, но я бы предпочел использовать RichTextBox. Есть ли какое-то свойство, которое нужно установить, чтобы видеть обновления?

UPDATE: Кроме того, как мне автоматически сделать прокрутку вниз при каждом отображении сообщения?

Как я уже сказал, если я заменю RichTextBox на TextBox, я могу видеть каждую строку сообщений по мере их записи, а также автоматически прокручивать вниз, чтобы отобразить последний добавленный текст.

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

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

Ответы [ 3 ]

2 голосов
/ 25 февраля 2012

Простое и быстрое исправление будет

Application.DoEvents()

1 голос
/ 25 февраля 2012

Для автоматической прокрутки RichTextBox используйте ScrollToCaret метод:

richTextBox.AppendText("Hello");    
richTextBox.ScrollToCaret();
0 голосов
/ 25 февраля 2012

Ваш код выглядит так, как будто он должен работать, убедитесь, что вы отметили правильный флаг InvokeRequired:

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

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