none
RichTextBoxへのデータ追加について RRS feed

  • 質問

  • いつもお世話なっております。

     RichTextBoxに、AppendTextでテキストを追加します。

     一応、一定量になったら、先頭のデータを消すようにしていますが、やはり、追加されるデータ量が多くなると、処理が重くなってしまいます。

     そこで、最初から、RichTextBoxに追加するテキスト数を設定して、予めその分のメモリを確保しておいたら、処理の速度が落ちないではないと考えています。

     RichTextBoxに使用させるメモリの事前指定が出来るでしょうか?

      よろしくお願い致します。

    2006年9月22日 2:48

すべての返信

  •  ZhangLiQun さんからの引用

    RichTextBoxに使用させるメモリの事前指定が出来るでしょうか?

    できないと思います。
    ところでどれぐらいのテキスト長で、どのように処理をされているのでしょうか?この処理の見直しで、改善が見られる可能性があるかもしれません。
    2006年9月22日 5:30
    モデレータ
  • trapemiya様

     いつもお世話なっております。

     trapemiya さんからの引用

     ZhangLiQun さんからの引用

    RichTextBoxに使用させるメモリの事前指定が出来るでしょうか?


    できないと思います。
    ところでどれぐらいのテキスト長で、どのように処理をされているのでしょうか?この処理の見直しで、改善が見られる可能性があるかもしれません。

     できないですか。

     実際、以下の様な処理を行います。

            private void AppendTextToRichTextBox(string a_msg)
            {
                //5000行を超えたら500行を削除する
                if (m_RichTextBox.Lines.Length > 5000)
                {
                    //削除範囲最終行の先頭文字の索引値を取ってくる
                    int SelEnd = m_RichTextBox.GetFirstCharIndexFromLine(500);
                    //削除範囲を選択
                    m_RichTextBox.Select(0, SelEnd);
                    //選択を削除する
                    m_RichTextBox.SelectedText = string.Empty;
                }
                // 画面にメッセージを追加表示
                m_RichTextBox.AppendText(a_msg);
            }

       最初の処理が早く、行数が多くなると、重くなる様な気がします。

       よろしくお願い致します。

    2006年9月22日 6:12
  • AppendText使うよりStringBuilderを使って文字列操作したほうが早かったと思う。
    2006年9月22日 8:20
  • どっとねっとふぁん様

     こんにちは。

     どっとねっとふぁん さんからの引用
    AppendText使うよりStringBuilderを使って文字列操作したほうが早かったと思う。

     StringBuilderを使って、文字列を操作してから、RichTextBoxに表示することですね。

     具体的に、どうしたら、連結しますかを教授して頂けますか?

     RichTextBoxのTextプロパティにStringBuilderのToStringを代入することじゃないですよね。

     よろしくお願い致します。

    2006年9月22日 9:50