Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка Windows Forms > Изменения шрифта в RichTextBox без потери форматир


Автор: wonderfulll 9.2.2008, 16:23
Есть отформатированный .rtf файл(болды, италики, подчёркивания). Как можно поменять шрифт всего документа без потери форматирования. 
Параметр Font не подходит, так как у него обязательное поле FontStyle  в котором увы стиля None нету.

Автор: Azzdorf 9.2.2008, 16:58
изминение либо какого параметра шрифта (имя, цвет, размер....) - является формитированием - другими словами твой вопрос: Можна ли отформатировать текст не отформатировав его???

Ответ - нет

Другой вариант - считать форматирование каждого симвоала в массив данных и применить по новому после применения нового шрифта 

Автор: wonderfulll 10.2.2008, 10:21
такой способ был на примете, но какой-то он "деревянный", неужели тот же Ворд так работает?

п.с.: пока другого не найду, буду использовать этот, Azzdorf спасибо.

вот код:
Код

        //этот код был найден тут http://channel9.msdn.com/ShowPost.aspx?PostID=142541#142541
        private void _set_font_style(RichTextBox rtb, FontStyle style, string font, float size)
        {
            int selectionStart = rtb.SelectionStart;
            int selectionLength = rtb.SelectionLength;
            int selectionEnd = selectionStart + selectionLength;

            for (int x = selectionStart; x < selectionEnd; ++x)
            {
                // Set temporary selection
                rtb.Select(x, 1);
                // Toggle font style of the selection
                rtb.SelectionFont = new Font(font, size, rtb.SelectionFont.Style ^ style);
            }

            // Restore the original selection
            rtb.Select(selectionStart, selectionLength);
        }

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