none
请问如何判断 RichTextBox的垂直滚动条到达最底部?

    问题

  • 在使用RichTextBox 显示文字时 ,需要使用鼠标滚动文字,或者直接使用鼠标拖动 滑块, 使其显示最底部文字

    请问如何判断 滚动条滑块 是否到达 最底部?

    谢谢 

    2017年2月21日 3:00

全部回复

  • 你好,

    可以通过调用 Win32 API 来实现它. win32 API 有一个方法叫做 GetScrollInfo,可用通过该方法来滑块的信息,并通过计算看是不是到底部.

    请参考下面的代码:

    //需用添加引用 using System.Runtime.InteropServices; //你可以定义一个richbox的扩展方法

    public static class RichTextBoxExtension { [DllImport("user32")] private static extern int GetScrollInfo(IntPtr hwnd, int nBar, ref SCROLLINFO scrollInfo); public struct SCROLLINFO { public int cbSize; public int fMask; public int min; public int max; public int nPage; public int nPos; public int nTrackPos; } public static bool ReachedBottom(this RichTextBox rtb){ SCROLLINFO scrollInfo = new SCROLLINFO(); scrollInfo.cbSize = Marshal.SizeOf(scrollInfo); //SIF_RANGE = 0x1, SIF_TRACKPOS = 0x10, SIF_PAGE= 0x2 scrollInfo.fMask = 0x10 | 0x1 | 0x2; GetScrollInfo(rtb.Handle, 1, ref scrollInfo);//nBar = 1 -> VScrollbar return scrollInfo.max == scrollInfo.nTrackPos + scrollInfo.nPage; } } //用法: if(!yourRichTextBox.ReachedBottom()){ yourRichTextBox.ScrollToCaret(); //... }


    Best regards,

    Cole Wu


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.


    2017年2月21日 7:00
    版主