RichTextbox1 に大量のテキストを追加すると、右側にスクロール バーがありますが、内部のテキストは常にスクロールを追加する行です。マウスで右側のバーを下にドラッグした場合にのみ、テキストスクロールが表示されます。
内部のテキストが richTextbox の下部に到達したら、自動的にスクロールしたいと考えています。
どうすればできますか?
RichTextBox コントロールにテキストが追加されるたびに、これらのステートメントを実行して、RichTextBox 内のテキストの末尾にカーソルを移動する必要があります。RichTextBox コントロールの名前が richTextBox であると仮定すると、次のようなステートメントがあります。
richTextBox.SelectionStart = richTextBox.Text.Length;
richTextBox.ScrollToCaret();
このコードは完全に機能します: ------
namespace CustomRTB
{
public class CustomRTB : RichTextBox
{
#region API Stuff
[DllImport("user32.dll", CharSet = CharSet.Auto)]
public static extern int GetScrollPos(IntPtr hWnd, int nBar);
[DllImport("user32.dll")]
private static extern int SetScrollPos(IntPtr hWnd, int nBar, int nPos, bool bRedraw);
private const int SB_HORZ = 0x0;
private const int SB_VERT = 0x1;
#endregion
public int HorizontalPosition
{
get { return GetScrollPos((IntPtr)this.Handle, SB_HORZ); }
set { SetScrollPos((IntPtr)this.Handle, SB_HORZ, value, true); }
}
public int VerticalPosition
{
get { return GetScrollPos((IntPtr)this.Handle, SB_VERT); }
set { SetScrollPos((IntPtr)this.Handle, SB_VERT, value, true); }
}
}
}
含まれているRichTextBoxクラスのプロパティで確認できます
public RichTextBoxScrollBars ScrollBars { get; 設定; }
このプロパティを使用すると、RichTextBox コントロールのユーザーに水平スクロール バーと垂直スクロール バーを提供して、スクロールを有効にすることができます。