Управления 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 ответа:
Это возможно потому, что свойства 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()