[解決済み] 複数行のテキストボックスの一番下まで自動的にスクロールするにはどうしたらいいですか?
質問内容
テキストボックスに.Multilineプロパティがtrueに設定されています。 一定の間隔で、新しいテキスト行を追加しています。 新しい行が追加されるたびに、テキストボックスが自動的に一番下の項目(最新のもの)にスクロールするようにしたいのですが、可能でしょうか? どうすれば実現できるでしょうか?
どのように解決するのですか?
<ブロッククオート一定時間ごとに、新しい行を追加しています。新しい行が追加されるたびに、テキストボックスが自動的に一番下のエントリ(最新のもの)にスクロールするようにしたいのです。
を使用する場合
TextBox.AppendText(string text)
の場合、新しく追加されたテキストの終わりまで自動的にスクロールします。ループで呼び出す場合は、スクロールバーのちらつきを避けることができます。
に連結するよりも一桁速くなります。
.Text
プロパティを使用します。ただし、これは呼び出す頻度によるかもしれません。私はタイトなループでテストしていました。
テキストボックスが表示される前に呼び出された場合、またはテキストボックスが表示されていない場合(たとえば TabPanel の別のタブにある場合)には、これはスクロールしません。参照 TextBox.AppendText()が自動スクロールしない件 . これは、ユーザーがテキストボックスを見ることができないときに自動スクロールを必要とするかどうかによって、重要であったりなかったりします。
この場合、他の回答で紹介されている代替方法もうまくいかないようです。これを回避する一つの方法として
VisibleChanged
イベントが発生します。
textBox.VisibleChanged += (sender, e) =>
{
if (textBox.Visible)
{
textBox.SelectionStart = textBox.TextLength;
textBox.ScrollToCaret();
}
};
内部的には
AppendText
は、こんな感じです。
textBox.Select(textBox.TextLength + 1, 0);
textBox.SelectedText = textToAppend;
しかし、手動で行う理由はないはずです。
(自分で逆コンパイルしてみると、より効率的な内部メソッドが使われている可能性があることや、ちょっとした特殊ケースと思われるものがあることがわかると思います)。
関連
-
[解決済み】C#におけるtypedefの等価性
-
[解決済み】取り消せないメンバはメソッドのように使えない?
-
[解決済み】C# - パスに不正な文字がある場合
-
[解決済み】URLから画像をダウンロードする方法
-
[解決済み】ファイルやアセンブリ、またはその依存関係の1つをロードできませんでした。
-
[解決済み] WPFのTextBlockで自動縦スクロールバー?
-
[解決済み] 他のスレッドからGUIを更新するにはどうすればよいですか?
-
[解決済み] JavaScriptでページの一番上までスクロールする?
-
[解決済み] ユーザーが上にスクロールしない限り、overflow div は下にスクロールされたままになる
-
[解決済み】WPFを使用してラベルでテキストをラップするにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】WebForms UnobtrusiveValidationModeは、jqueryのScriptResourceMappingを必要とする
-
[解決済み】C#はJavaのcharAt()と同等?)
-
[解決済み】SmtpException: トランスポート接続からデータを読み取れません:net_io_connectionclosed
-
[解決済み】Unity3DでOnTriggerEnterが動作しない件
-
[解決済み】非静的メソッドはターゲットを必要とする
-
[解決済み】リソースの読み込みに失敗した:ステータス500(内部サーバーエラー)のサーバーの応答)
-
[解決済み] UnityでOnCollisionEnterが呼ばれない
-
[解決済み】"指定されたパスのフォーマットはサポートされていません。"
-
[解決済み】「...は'型'であり、与えられたコンテキストでは有効ではありません」を解決するにはどうすればよいですか?(C#)
-
[解決済み】IntPtrとは一体何なのか?