如果您的问题与“垂直滚动”滚动下来的时候,你要添加的记录文本,但你会希望它是在上面所有的时间:
你必须添加事件处理程序VSCROLL,框TextChanged事件和事件处理程序设置滚动到顶部
richTextBox1.VScroll += HandleRichTextBoxAdjustScroll;
richTextBox1.TextChanged += HandleRichTextBoxAdjustScroll;
private const UInt32 SB_TOP = 0x6;
private const UInt32 WM_VSCROLL = 0x115;
[return: MarshalAs(UnmanagedType.Bool)]
[DllImport("user32.dll", SetLastError = true)]
private static extern bool PostMessage(IntPtr hWnd, UInt32 Msg,
IntPtr wParam, IntPtr lParam);
private void HandleRichTextBoxAdjustScroll(Object sender,
EventArgs e)
{
PostMessage(handle, WM_VSCROLL, (IntPtr)SB_TOP, IntPtr.Zero);
}
你就可以用水平滚动条相同了。与WM_HSCROLL和SB_TOP与SB_LEFT更换WM_VSCROLL
private const UInt32 WM_HSCROLL = 0x0114;
private const UInt32 SB_LEFT = 0x06;
这听起来有些奇怪,因为去年底应明确的地方进行。你确定追加的代码不会将选择设置到最后? –
不,只是AppendText(“text”),AppendText(“\ t”),Appendtext(“\ n”) – truthseeker
我发现有趣的事情。自动滚动仅在文本区域具有焦点时发生。点击进入文本区域后,出现问题。如果我没有点击它,我可以在滚动条上滚动消息,同时添加新消息并且文本不会跳跃。 – truthseeker