2012-02-25 10 views
1

RichTextBoxをステータス表示として使用しようとしていますが、RichTextBoxのテキストに追加するたびに更新されません。通常の複数行TextBoxは、新しいテキストが追加されるたびに更新されますが、RichTextBoxを使用することをお勧めします。更新を見るために設定する必要のあるプロパティがありますか?RichTextBoxはテキストステータス表示として使用されても常に更新されません

更新: また、メッセージが表示されるたびに自動的にスクロールダウンする方法を教えてください。

リッチテキストボックスをテキストボックスに置き換えると、メッセージの各行が書き出されるときにその行が表示され、自動的に下にスクロールされて最新のテキストが表示されます。それのような

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

あなたのコードを投稿してください何を試しても動作していませんか? – Star

+0

タイトルに「C#」などのプレフィックスを付けないでください。それがタグのためのものです。 –

答えて

1

簡単かつ迅速な修正がScrollToCaretメソッドを使用してください、

Application.DoEvents()

+0

私はどこでこれを私の形でしますか? – arc1880

+0

は、新しいテキストを追加するたびにそのステートメントを挿入します。 – roymustang86

+5

これはハックです。UIスレッドをブロックすると、これを問題の解決策と見なすべきではありません。 – BrokenGlass

1

が自動的にリッチテキストボックスのスクロールを行うことであろう正常に動作していることを確認してください。InvokeRequiredフラグ:

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

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

TextBoxには既にこの機能がありますか? – arc1880

+0

はい、TextBoxはデフォルトでキャレットに自動スクロールします。 – ogggre

0

あなたのコードに見える

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

    richTextBox.AppendText(textMessage + Environment.NewLine); 
} 
関連する問題