检查Windows表单滚动条是否已滚动到底部?

5
我有一个富文本框,用作日志。当追加新消息时,该日志会自动向下滚动,这很好。唯一的问题是当用户想查看之前的日志时,如果追加了新消息,框会自动滚动到最底部,并阻止用户查看任何内容。
我想能够检查富文本框是否已经滚动到底部,如果没有就不要滚动。
目前,我可以在虚拟文本空间中获取滚动位置(使用EM_GETSCROLLPOS发送消息)。我还可以通过调用GetScrollBarInfo pinvoke来获取滚动条信息。但是,如何找出虚拟文本空间的底部呢?
谢谢!

如果您检查文本的末尾是否在可见区域内,那不是更直观吗? - TheBlastOne
当然,但是你怎么做到呢? - jakobbotsch
唉,我只记得用 WM_GETTEXT 发送 SendMessage。我得找出来,现在手头上没有,抱歉。但我会尽量在今天或之前找到它。 - TheBlastOne
1个回答

2

使用vScrollBar控件为您的RichTextBox添加垂直滚动条,并处理其滚动事件。

    private void vScrollBar1_Scroll(object sender, ScrollEventArgs e)
    {
        if (e.Type == ScrollEventType.Last)
        {
            //scrollbar is all the way down
        }
        else
        {
            //user has scrolled up
        }
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接