複数行テキストボックスで、最初の行、最後の行にスクロールする - C#

複数行テキストボックスで、最初の行や最後の行にスクロールするコードを紹介します。

実装例

UI

下図のUIを作成します。テキストボックスを1つButtonを2つ配置します。


テキストボックスのScrollBarsプロパティを"Both"に変更します。また、WordWrapプロパティを"False"にします。


コード

以下のコードを記述します。button1,button2のClickイベントハンドラとフォームのLoadイベントを記述します。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;

namespace ScrollFirstAndLast
{
  public partial class FormMain : Form
  {
    public FormMain()
    {
      InitializeComponent();
    }

    private void FormMain_Load(object sender, EventArgs e)
    {
      FileStream fs = new FileStream("doc.txt", FileMode.Open);
      StreamReader sr = new StreamReader(fs);
      string doc = sr.ReadToEnd();
      textBox1.Text += doc;

      sr.Close();
      fs.Close();

      textBox1.SelectionLength = 0;
      textBox1.SelectionStart = 0;
    }

    private void button1_Click(object sender, EventArgs e)
    {
      textBox1.SelectionStart = 0;
      textBox1.ScrollToCaret();
    }

    private void button2_Click(object sender, EventArgs e)
    {
      textBox1.SelectionStart = textBox1.Text.Length;
      textBox1.ScrollToCaret();
    }
  }
}

解説

Loadイベント

doc.txtファイルを読み込み、ファイル内容をテキストボックスに表示します。詳細はこちらの記事を参照してください。

ButtonのClickイベント

テキストボックスのSelectionStartプロパティに0を設定しキャレットをドキュメントの先頭に移動します。移動後ScrollTocaretメソッドを呼び出しキャレットが見える位置までスクロールすることで、ドキュメントの先頭へスクロールできます。
private void button1_Click(object sender, EventArgs e)
{
  textBox1.SelectionStart = 0;
  textBox1.ScrollToCaret();
}

テキストボックスのSelectionStartプロパティにドキュメントの長さの値を設定し、キャレットを末尾に移動します。キャレットの移動後ScrollTocaretメソッドを呼び出しキャレットが見える位置までスクロールさせ、ドキュメントの末尾にスクロールできます。
private void button2_Click(object sender, EventArgs e)
{
  textBox1.SelectionStart = textBox1.Text.Length;
  textBox1.ScrollToCaret();
}

doc.txt

スクロールバーが表示される程度の長さのあるドキュメントを用意します。ソリューションエクスプローラでファイルのプロパティの[出力ディレクトリ]プロパティを[常に出力する]に設定します。
iPentec DocumentではiPentecスタッフによる、レビュー Tips メモ その他の記事を集中管理しています。 

■プログラミングTips
  - C# プログラミングTips
  - C# プログラミングTips(旧目次)
  - CSS Tips
  - PHP プログラミング Tips
  - Flash Action Script 3 Tips
  - Java プログラミングTips 

■サーバ管理 Windows Tips
  - Windows Server Tips
  - SQL Server 2008 Tips
  - Windows Tips
  - Redmineサーバーの構築と運用
  - Subversionサーバーの構築と運用 

■プログラミング基本
  - C# 制御フロー
  - Java 制御フロー
  - PHP 制御フロー
  - Delphi 制御フロー
  - JavaScript 制御フロー

■Delphi
  - Delphiレビュー記事
  - DelphiプログラミングTips 

■3D CG(コンピューターグラフィックス)
  - iPentec 3DCG 

■その他
  - 健康・ヘルスケア関連
  - 家電・ライフスタイル関連
  - デジタルカメラ関連
  - ページタイトル命名規則 
  - 注目製品・サービスメモ 

■ランキング
  - iPentec 2011年 レビュー・開発Tips記事ページ ランキング
  - iPentec 2010年 レビュー・開発Tips記事ページ ランキング
  - iPentec 2009年 レビュー・開発Tips記事ページ ランキング
  - iPentec 2008年 レビュー・開発Tips記事ページ ランキング
 
■ツール類
  - UTC JST変換ツール
  - $GPGGAプロットツール

実行結果

プロジェクトを実行します。下図のウィンドウが表示されます。


button2をクリックするとテキストボックスの末尾へスクロールします。


末尾にスクロールした状態でbutton1をクリックすると先頭へスクロールできます。


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