Disabling RichTextBox autoscroll

后端 未结 2 1249
逝去的感伤
逝去的感伤 2020-12-18 06:49

I am using RichTextBox control for displaying application logs. I am updating control once a second with a few calls of RichTextBox::AppendText method. What is really annoyi

相关标签:
2条回答
  • 2020-12-18 07:09

    You may try tb_logs.SelectionLength = 1; along with SelectionStart. This will make 1 char selected from your Current Position.

    Not Tried it...But may work

    0 讨论(0)
  • 2020-12-18 07:14

    If your issue is with the "Vertical Scroll" scrolling down when you are adding the Log text, but you would want it to be on top all the time:

    you have to add event handlers to VScroll, TextChanged events and in the event handler set the scroll to top

    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);
    }
    

    You could do the same with horizontal scroll bar too. Replace WM_VSCROLL with WM_HSCROLL and SB_TOP with SB_LEFT

    private const UInt32 WM_HSCROLL = 0x0114;
    private const UInt32 SB_LEFT = 0x06;
    
    0 讨论(0)
提交回复
热议问题