Управления richtextbox только с помощью форматирования


Я использую Visual Studio 10, .NET Framework 4 и создавал элемент управления Rich Text Box для ввода текста. Я форматирую текст, только написав

*RichTextBox*.SelectionFont = new Font(currentFontFamily, currentFontSize, currentFontStyle);
Метод

.

Когда я теперь обращаюсь к rtf-форматированной строке через RichTextBox .Свойство Rtf, оно работает, но содержит только первое форматирование.

Например:

Алло Мир

Приводит к:

{rtf1ansiansicpg1252deff0deflang1031{fonttbl{f0fnilfcharset0 Verdana;}}
{colortbl ;red0green0blue0;}
viewkind4uc1pardcf1bf0fs18 Hello Worldpar
}

Что на самом деле является Привет Мир

Это одно и то же для всего. Шрифты, размеры, цвета, форматирование и так далее. Кто-нибудь может помочь??

2 2

2 ответа:

Это возможно потому, что свойства SelectionStart и SelectionLength не являются допустимыми. Если вы явно ограничите выбор с помощью этих свойств, то RTF-вывод будет таким, как и ожидалось:

richTextBox1.Text = "Hello World";

// limit selection
richTextBox1.SelectionStart = 0;
richTextBox1.SelectionLength = 5;

richTextBox1.SelectionFont = new Font("Tahoma", 12, FontStyle.Bold);

MessageBox.Show(richTextBox1.Rtf);

Становится

{\rtf1\ansi\deff0{\fonttbl{\f0\fnil\fcharset0 Tahoma;}{\f1\fnil\fcharset0 Microsoft Sans Serif;}}
\viewkind4\uc1\pard\lang1031\b\f0\fs24 Hello\b0\f1\fs17  World\par
}

Редактировать:

Как упоминалось ниже, реальной причиной проблемы был вызов TrimEnd ():

richTextBox1.Text.TrimEnd()
Как только он снял его, все заработало, как и ожидалось.

Я обнаружил проблему.

*RichTextBox*.Text = *RichTextBox*.Text.TrimEnd();

Приводит к тому, что Rtf теряет часть своего форматирования. Я думал, что это повлияет только на сам текст, а не на форматирование (особенно когда просто удаляются пробелы) - думаю, я ошибся.

Спасибо viertausend помощь