gpt4 book ai didi

Winforms RichTextBox : How can I determine how many lines of text are visible?

转载 作者:行者123 更新时间:2023-12-04 03:18:03 24 4
gpt4 key购买 nike

我有一个包含 RichTextBox 的 Winforms 应用程序。

如何确定当前可见的文本行数?

原因:我想将插入符号滚动到 RichTextBox 的中间。我可以用 RichTextBox.ScrollToCaret() ,但这会将插入符号放在 RichTextBox 的顶部。我想,如果我知道显示了多少行,我可以将插入符号“向后”移动 n/2 行,然后调用 ScrollToCaret(),然后恢复原始插入符号位置。

编辑:

我找到了 EM_GETLINECOUNT ,我认为这是答案,除了文档说: EM_GETLINECOUNT 消息检索文本行的总数,而不仅仅是当前可见的行数。

诱人的是,还有EM_GETFIRSTVISIBLELINE ,它获得了第一条可见线,但我找不到GETLASTVISIBLELINE。 ??

有关的:
How can I scroll the caret to the middle of the RichTextBox?

最佳答案

嗯,这并不漂亮,但对我有用。基本上,我正在检查富文本框左上角内的一个点和文本框左下角内的一个点。您可能需要根据富文本框的显示方式调整点坐标。然后我得到最接近这两个点中的每一个的字符索引,并检索它所在的行。

Dim topIndex As Integer = RichTextBox1.GetCharIndexFromPosition(New Point(1, 1))
Dim bottomIndex As Integer = RichTextBox1.GetCharIndexFromPosition(New Point(1, RichTextBox1.Height - 1))

Dim topLine As Integer = RichTextBox1.GetLineFromCharIndex(topIndex)
Dim bottomLine As Integer = RichTextBox1.GetLineFromCharIndex(bottomIndex)

Dim numLinesDisplayed As Integer = bottomLine - topLine

我对显示多种字体的富文本框进行了测试,它似乎有效。如果显示文本的最后一行下面有很多空白并且下一行几乎可以显示,我怀疑返回的答案将关闭(太小)一行。如果你有一个非常高的 Richtextbox,有很多行,这应该不是问题。

关于Winforms RichTextBox : How can I determine how many lines of text are visible?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1773505/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com