ここでは、複数行テキストボックスまたはリッチテキストボックスで、スクロールさせて最後の行を表示する方法を紹介します。
テキストボックスのSelectionStartプロパティでカレット位置を最後に移動させてから、ScrollToCaretメソッドでスクロールさせることができます。
ただし、リッチテキストボックスの場合は、ScrollToCaretメソッドを呼び出す時にリッチテキストボックスにフォーカスがないとスクロールしません。テキストボックスの場合はフォーカスがなくてもScrollToCaretメソッドでスクロールしますが、MSDNのScrollToCaretメソッドの説明には「コントロールにフォーカスがない場合、またはカレットが既にコントロールの表示領域に位置している場合、このメソッドは無効です。」とありますので、テキストボックスでもフォーカスを移動させておいた方が確実です。
'カレット位置を末尾に移動 TextBox1.SelectionStart = TextBox1.Text.Length 'テキストボックスにフォーカスを移動 TextBox1.Focus() 'カレット位置までスクロール TextBox1.ScrollToCaret()
//カレット位置を末尾に移動 TextBox1.SelectionStart = TextBox1.Text.Length; //テキストボックスにフォーカスを移動 TextBox1.Focus(); //カレット位置までスクロール TextBox1.ScrollToCaret();
テキストボックスの末尾に文字列を追加した時にスクロールさせたいのであれば、AppendTextメソッドが便利です。AppendTextメソッドでテキストボックスの末尾に文字列を追加すれば、自動的にテキストボックスの末尾までスクロールします。ただしリッチテキストボックスではAppendTextメソッドを呼び出す前にフォーカスを移動させておかないとスクロールしません。
'リッチテキストボックスにフォーカスを移動 RichTextBox1.Focus() '末尾に現在の日時を追加して、スクロール RichTextBox1.AppendText(System.Environment.NewLine & _ System.DateTime.Now.ToString())
//リッチテキストボックスにフォーカスを移動 RichTextBox1.Focus(); //末尾に現在の日時を追加して、スクロール RichTextBox1.AppendText(System.Environment.NewLine + System.DateTime.Now.ToString());
注意:この記事では、基本的な事柄の説明が省略されているかもしれません。初心者の方は、特に以下の点にご注意ください。