テキストボックスでキャレットが見える位置にスクロールさせる - C#

複数行のテキストボックスなどでキャレットの位置までテキストボックスをスクロールするコードの例です。

コード例

private void button1_Click(object sender, EventArgs e)
{
  textBox1.Text = "";
  for (int i = 0; i < 100; i++) {
    textBox1.Text += string.Format("Line : {0:d}\r\n", i);
    textBox1.Update();
    textBox1.Select(textBox1.Text.Length, 0);
    textBox1.ScrollToCaret();
  }
}

解説

textBox1.Text = "";
テキストボックス内の文字列をクリアします。

for (int i = 0; i < 100; i++) {
 ...
}
100回ループします。

textBox1.Text += string.Format("Line : {0:d}\r\n", i);
テキストボックスに "Line : (番号)" の行を追加します。番号は最初の行が0で99まで増えます。

textBox1.Update();
テキストボックスを更新します。この処理が無い場合ループを抜け終わるまで更新処理が保留されるため実行結果を見ることができません。

textBox1.Select(textBox1.Text.Length, 0);
キャレットをテキストの一番最後に移動させます。

textBox1.ScrollToCaret();
キャレットがテキストボックスの見える位置にくるようにテキストボックスをスクロールします。

実行結果

常に最後に足された行が、テキストボックス内に見えるようにテキストボックスがスクロールしされす。


著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
最終更新日: 2024-01-06
作成日: 2011-08-30
iPentec all rights reserverd.