none
RichTextBoxにおけるAppedTextの挙動について RRS feed

  • 質問

  • VC++2005によるRichTextBoxを使用したプログラムを作成しています。
    定期的に他のプログラムから送信される文字列をAppendText()を利用してRichTextBoxに追加しているのですが、RichTextBoxのスクロールバーなどを操作して別の部分を見ようとしても、AppendText()が呼ばれるとすぐにカーソルとともに最下段に表示が移動しています。

    RichTextBoxへのテキストの追加をつづけながら、ある操作を行ったときには自動的にカーソルおよび表示範囲の移動を抑止することは可能でしょうか。

    AppendText()に限らず、何かよい方法があれば教えてもらえませんか。
    2009年3月9日 2:57

回答

  • 回答して良いのかどうなのか、深読みして書けない感じの質問ですが、焦げそうでしたの書いてみます。
    VC++は、得意としていないのでVB.NETで調べてみました。

    おそらく、アペンド中ず~っと自動スクロールを抑止という事ではなくて、
    「ある特定の期間だけ自動スクロールを抑止」という事なんだと思います。

    AppentText は、対象のRichTextBoxにフォーカスが無い場合は、勝手にスクロールしないようでした。
    フォーカスが移動してしますと、新しい行が表示され続けます。
    フォーカスが無い状態で、スクロールバーを掴んだだけでは、フォーカスの移動が完了していないので、スクロール可能です。
    ですので、必要な間だけ、「RichTextBoxにフォーカスがいかない」か「フォーカスが行っても別のコントロールにフォーカスが即座に移動する」といった状況を作ればよいのではないでしょうか。
    例えば、VScrollイベントで他のコントロールにフォーカスを移動すると言ったような事です。

    もちろん、TextBox(Base)を継承してなんたらかんたらというような、高尚な方法もあると思います・・

    最も高尚じゃない方法として        
    RichTextBox1.Text &= ”ほげほげ” にしておいて、自前スクロール(Select)仕込むとか・・

    どうでしょうか(^^;


    chonmage
    • 回答としてマーク sk7474 2009年4月30日 7:24
    2009年4月16日 2:26

すべての返信

  • 回答して良いのかどうなのか、深読みして書けない感じの質問ですが、焦げそうでしたの書いてみます。
    VC++は、得意としていないのでVB.NETで調べてみました。

    おそらく、アペンド中ず~っと自動スクロールを抑止という事ではなくて、
    「ある特定の期間だけ自動スクロールを抑止」という事なんだと思います。

    AppentText は、対象のRichTextBoxにフォーカスが無い場合は、勝手にスクロールしないようでした。
    フォーカスが移動してしますと、新しい行が表示され続けます。
    フォーカスが無い状態で、スクロールバーを掴んだだけでは、フォーカスの移動が完了していないので、スクロール可能です。
    ですので、必要な間だけ、「RichTextBoxにフォーカスがいかない」か「フォーカスが行っても別のコントロールにフォーカスが即座に移動する」といった状況を作ればよいのではないでしょうか。
    例えば、VScrollイベントで他のコントロールにフォーカスを移動すると言ったような事です。

    もちろん、TextBox(Base)を継承してなんたらかんたらというような、高尚な方法もあると思います・・

    最も高尚じゃない方法として        
    RichTextBox1.Text &= ”ほげほげ” にしておいて、自前スクロール(Select)仕込むとか・・

    どうでしょうか(^^;


    chonmage
    • 回答としてマーク sk7474 2009年4月30日 7:24
    2009年4月16日 2:26
  • こんにちは。中川俊輔です。

    chonmageさん、回答ありがとうございます。

    hikohikoさん、はじめまして。フォーラムのご利用ありがとうございます。
    その後いかがでしょうか?スクロールの問題は解決しましたか?

    有用な情報と思われたため、chonmageさんの回答へ回答マークをつけさせていただきました。

    今後ともフォーラムをよろしくお願いします。
    それでは!
    マイクロソフト株式会社 フォーラム オペレータ 中川 俊輔
    2009年4月30日 7:27