C#のTextBoxで最下行に自動でスクロールする方法
C#のTextBoxに文字列を大量に表示したときに、スクロールを自動的に行って最下行を表示する方法を試してみます。
目次
TextBoxは自動的には最下行を表示しない
TextBoxにたくさんの行の文字列を表示してみましょう。
XAML
<Window x:Class="WpfApp1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WpfApp1"
mc:Ignorable="d"
Title="MainWindow" Height="200" Width="200" Loaded="Window_Loaded">
<Grid>
<TextBox Name="TextBoxTest" Margin="10" VerticalScrollBarVisibility="Auto" />
</Grid>
</Window>
XMLの説明
WindowにTextBlockを配置しただけの簡素なものです。TextBoxにVerticalScrollBarVisibilityを設定して、縦スクロールバーが表示されるようにしてあります。
コード
using System;
using System.Windows;
namespace WpfApp1
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
for (int i = 0; i < 100; i++)
{
TextBoxTest.Text = TextBoxTest.Text + i.ToString() + Environment.NewLine;
}
}
}
}
コードの説明
WindowがLoadされたら、TextBoxに0から99までの文字を1行ずつ表示します。
実施例
上述のプログラムを実行すると、このようになります。
TextBoxには文字列の最初の部分が表示されています。
最下行の方を見ようとしたら、TextBoxをスクロールしなくてはならないですね。これではちょっと面倒なこともあります。
TextBoxを強制的にスクロールする
TextBoxにはScrollToEndというメソッドがありますので、それを利用します。このメソッドは、コントロールのビューを内容の最後までスクロールするメソッドです。
TextBox.ScrollToEnd();
変数 |
型 |
内容 |
---|---|---|
TextBox |
TextBox |
スクロールする対象のTextBoxインスタンス |
強制的にスクロールするコード
XAMLの方は変更せず、コードだけを変えてみます。
using System;
using System.Windows;
namespace WpfApp1
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
for (int i = 0; i < 100; i++)
{
TextBoxTest.Text = TextBoxTest.Text + i.ToString() + Environment.NewLine;
TextBoxTest.ScrollToEnd();
}
}
}
}
強制的にスクロールするコードの説明
TextBoxに文字を追加した後に、ScrollToEndメソッドを実行するようにしました。
強制的にスクロールするコードの実施例
実行するとこうなります。
入力した文字列の最後の方が表示されるようになりました。
ログのようなものを表示されるのに便利なのではないかと思います。
公開日
広告
C#のコントロールカテゴリの投稿
- C#でコレクションの要素の変更をバインド先のコントロールに反映する方法
- C#のComboBoxを使ってみた
- C#のDataGridで右クリックメニューを作ってみた
- C#のDataGridの罫線と背景色を変えてみた
- C#のListBoxでCheckBoxを並べてみた
- C#のListBoxを使ってみた
- C#のListViewで列のタイトルを変える
- C#のListViewで選択したアイテムを取得する方法
- C#のListViewに文字を入力する方法
- C#のListViewのヘッダーをクリックして列をソートする方法
- C#のListViewを使ってみた
- C#のRadioButtonで選択された項目を調べる(foreach編)
- C#のRadioButtonを試してみた
- C#のTextBoxで最下行に自動でスクロールする方法
- C#のWPFのコントロール一覧
- C#のスライダコントロールを試してみた
- C#のタブをコードから切り替える
- C#のメニューのイベントを1つにまとめてみた