Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > .NET для новичков > RichTextBox и работа с текстом


Автор: NosfBlazE 30.7.2011, 22:01
Здравствуйте.
В обычном оконном приложении есть форма с RichTextBox, в котором введен какой-то форматированный текст, раскрашенный разными цветами. Можно ли как-нибудь обратиться к этому объекту и узнать каким именно цветом и шрифтом написана в нем конкретная буква? Что-то вроде RichTextBox.Rtf[i].<Получить стиль> .
Надеюсь на вашу помощь. smile

P.S. Зачем мне это надо? Хочу перевести весь текст в html представление с сохранением исходного форматирования. То есть расставить соответствующие теги и стили.

Автор: AlexNagits 30.7.2011, 22:24
Могу предложить простой вариант. Но предупреждаю сразу, что он скорее всего будет работать медленно!

Поочередно выделяя каждый символ в richTextBox, мы можем читать richTextBox.SelectionColor, SelectionFont и другие свойства.. Так мы сможем точно узнать форматирование каждого символа. Но при больших текстах, наверное, будет работать очень медленно.
Код

            for (var i = 0; i < richTextBox.Text.Length; i++)
            {
                richTextBox.Select(i, 1);
                //richTextBox.SelectionColor;
                //richTextBox.SelectionFont
                //richTextBox.SelectionBackColor
                // и т.д.
            }


Можно ускорить немного, ценой точности парсинга форматирования. Предварительно разбить текст на отдельные слова по символу ПРОБЕЛ richTextBox.Text.Split(" "). И в цикле считывать форматирование не посимвольно, а по словам.

Самый правильный вариант, конечно, разбирать чистый rtf-код (теги). Но он и самый сложный, если вы не знакомы со спецификацией rtf.

Автор: AlexNagits 30.7.2011, 23:02
Кстати, попробуйте погуглить по запросу rtf2html.
Посмотрите http://sourceforge.net/projects/rtf2html/, может вам подойдет? Она консольная, из проги передаете ей команды и все, не нужно будет изобретать велосипед smile ...

Автор: NosfBlazE 31.7.2011, 13:33
Действительно, Вы правы. Наверное, проще искать конвертер ртф2хтмл.
Предложенный способ не подходит, во-первых, так как текст достаточно большого объема, во-вторых, он в процессе работы редактируется, а это будет сбивать индексы. =\
С ртф спецификацией, к сожалению, не знаком, в этом и вся сложность. Знаю, что там с помощью какой-то специфической разметки хранится информация о форматировании. Вот было бы здорово эту информацию как-то получать.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)