DOBON.NET プログラミング道: .NET Framework, VB.NET, C#, Visual Basic, Visual Studio, インストーラ, ...

TextBox(またはRichTextBox)の最後の行までスクロールさせる

ここでは、複数行テキストボックスまたはリッチテキストボックスで、スクロールさせて最後の行を表示する方法を紹介します。

ScrollToCaretメソッドを使う方法

テキストボックスのSelectionStartプロパティでカレット位置を最後に移動させてから、ScrollToCaretメソッドでスクロールさせることができます。

ただし、リッチテキストボックスの場合は、ScrollToCaretメソッドを呼び出す時にリッチテキストボックスにフォーカスがないとスクロールしません。テキストボックスの場合はフォーカスがなくてもScrollToCaretメソッドでスクロールしますが、MSDNのScrollToCaretメソッドの説明には「コントロールにフォーカスがない場合、またはカレットが既にコントロールの表示領域に位置している場合、このメソッドは無効です。」とありますので、テキストボックスでもフォーカスを移動させておいた方が確実です。

VB.NET
コードを隠すコードを選択
'カレット位置を末尾に移動
TextBox1.SelectionStart = TextBox1.Text.Length
'テキストボックスにフォーカスを移動
TextBox1.Focus()
'カレット位置までスクロール
TextBox1.ScrollToCaret()
C#
コードを隠すコードを選択
//カレット位置を末尾に移動
TextBox1.SelectionStart = TextBox1.Text.Length;
//テキストボックスにフォーカスを移動
TextBox1.Focus();
//カレット位置までスクロール
TextBox1.ScrollToCaret();

AppendTextメソッドで文字列を追加する方法

テキストボックスの末尾に文字列を追加した時にスクロールさせたいのであれば、AppendTextメソッドが便利です。AppendTextメソッドでテキストボックスの末尾に文字列を追加すれば、自動的にテキストボックスの末尾までスクロールします。ただしリッチテキストボックスではAppendTextメソッドを呼び出す前にフォーカスを移動させておかないとスクロールしません。

VB.NET
コードを隠すコードを選択
'リッチテキストボックスにフォーカスを移動
RichTextBox1.Focus()
'末尾に現在の日時を追加して、スクロール
RichTextBox1.AppendText(System.Environment.NewLine & _
    System.DateTime.Now.ToString())
C#
コードを隠すコードを選択
//リッチテキストボックスにフォーカスを移動
RichTextBox1.Focus();
//末尾に現在の日時を追加して、スクロール
RichTextBox1.AppendText(System.Environment.NewLine +
    System.DateTime.Now.ToString());
  • 履歴:
  • 2011/11/17 TextBoxとRichTextBoxの違いと、AppendTextメソッドの説明を追加。
  • 2013/8/25 AppendTextメソッドのサンプルを追加。

注意:この記事では、基本的な事柄の説明が省略されているかもしれません。初心者の方は、特に以下の点にご注意ください。

  • .NET Tipsをご利用いただく際は、注意事項をお守りください。