Winforms RichTextBox: Как я могу определить, сколько строк текста видимо?

Попытайтесь блокировать перед дампом. Вот то, как я инициирую полный дамп приложения. Мог бы работать на Вас, не мог бы.

Context.Application.Lock();
Context.Session.Abandon();
Context.Application.RemoveAll();
Context.Application.Restart();
Context.Application.UnLock();
10
задан Community 23 May 2017 в 11:46
поделиться

1 ответ

Ну, это некрасиво, но у меня это работает. Обычно я проверяю точку внутри верхнего левого угла richtextbox и точку внутри нижнего левого угла текстового поля. Возможно, вам придется настроить координаты точки в зависимости от того, как отображается ваше 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 с большим количеством строк, это не должно быть проблемой.

16
ответ дан 3 December 2019 в 22:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: