web-dev-qa-db-ja.com

C#TextBoxの一番下までスクロール

C#フォームアプリケーションにTextBoxがあります。フォームのLoadイベントに関する情報をTextBoxに入力します。その後、次の電話番号に電話します。

this.txtLogEntries.SelectionStart = txtLogEntries.Text.Length;
this.txtLogEntries.ScrollToCaret();

ただし、TextBoxは下にスクロールしませんか?

ただし、これはLoadイベントにのみ適用されます。また、このTextBoxを実行したらアプリケーションの他の部分から更新し、これらのイベントの1つがTextBoxを更新するとすぐに、下にスクロールします。

それでは、フォームロードイベントでTextBoxを事前入力するときに、一番下までスクロールするにはどうすればよいですか?

60
SnAzBaZ

フォームのShownイベントにコードを入れてみてください:

private void myForm_Shown(object sender, EventArgs e)
{
  txtLogEntries.SelectionStart = txtLogEntries.Text.Length;
  txtLogEntries.ScrollToCaret();
}
92
bernhof

Load イベント(発生するbeforeフォームが表示される)が処理されている間、表示するフォームはまだないため、視覚的な状態は確立されていません。したがって、非表示コントロールをスクロールしても何も実行されない可能性が非常に高くなります。スクロールビューポートはコントロールのビューであり、その状態の一部ではないため、スクロールするものがないからです。

フォームの Shown イベント(発生するafterが最初に表示される)にスクロール部分を移動すると、さらに成功する可能性があります。

16
Joey