Как получить отображаемый текст из RichTextBox? - PullRequest
4 голосов
/ 01 мая 2010

Как получить отображаемый текст в RichTextBox? Я имею в виду, что если RichTextBox прокрутить до конца, я бы хотел получать только те строки, которые мне видны.

P.S. Этого будет достаточно, чтобы получить первую отображаемую строку

Ответы [ 4 ]

6 голосов
/ 01 мая 2010

Вы должны использовать RichTextBox.GetCharIndexFromPosition(point).

Чтобы получить индекс первого видимого символа, передайте new Point(0, 0) (верхний левый угол клиентской области RTB) в качестве параметра point.
Чтобы получить индекс последнего видимого символа, передайте new Point(rtb.ClientSize.Width, rtb.ClientSize.Height) в качестве параметра point.

Затем вы можете использовать RichTextBox.Text.Substring(), чтобы получить весь видимый текст.

При необходимости вы можете использовать RichTextBox.GetLineFromCharIndex() для преобразования индексов символов в номера строк.

0 голосов
/ 04 июля 2015

Не элегантно, но я думаю, что это работает.

//Force selection 

richTextBox.SelectAll();

//Get the selected text

dataString = richTextBox.Selection.Text;

Это, конечно, не работает, если вы хотите позволить пользователю выбирать текст и т. Д.

0 голосов
/ 01 мая 2010

Из яичного кафе:

» Идея состоит в том, чтобы поместить текст под видимой областью полосы прокрутки.

Вам необходимо узнать высоту richtextbox и определить высоту текста, используя свойство TextHeight элемента управления. разделите высоту элемента управления на высоту текста.

Этим вы можете определить максимальное количество строк, которые можно разместить в элементе управления richtextbox.

Надеюсь, это разрешит или, по крайней мере, приблизит вас. «* * 1009

Взято из http://www.eggheadcafe.com/community/aspnet/2/10073516/how-to-select-the-visible.aspx

0 голосов
/ 01 мая 2010

Посмотрите на отправку сообщения EM_GETFIRSTVISIBLELINE с помощью функции API SendMessage.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...