2015-06-11 3 views
2

Я использую Visual Studio 10, .NET Framework 4 и создаю Rich Text Box Control для ввода текста. Я форматирую текст ТОЛЬКО путем написанияУправление RichTextBox использует только форматирование

*RichTextBox*.SelectionFont = new Font(currentFontFamily, currentFontSize, currentFontStyle); 

Метод.

Когда я получаю доступ к форматированной строкой Rtf через RichTextBox .Rtf свойство, оно работает, но ТОЛЬКО содержит первое форматирование.

Например:

ЗдравствуйтеМир

приводит:

{\rtf1\ansi\ansicpg1252\deff0\deflang1031{\fonttbl{\f0\fnil\fcharset0 Verdana;}} 
{\colortbl ;\red0\green0\blue0;} 
\viewkind4\uc1\pard\cf1\b\f0\fs18 Hello World\par 
} 

, который на самом деле является Hello World

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

+0

Показать некоторые примеры кода, где один из ваших кнопок применяет форматирование к вашему RTB. –

ответ

1

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

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 
} 

Edit:

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

richTextBox1.Text.TrimEnd() 

Как только он удалил все, все работало так, как ожидалось.

+0

Здравствуйте, Soner, благодарю вас за быстрый ответ. Когда я изменяю шрифт программно, как вы предлагаете, он работает. Однако я меняю его с помощью элемента управления, так что при наборе текста вы видите, что получаете. Когда специально маркируется текст (например, мышь) и форматирование (через кнопку), SelectionStart и SelectionLength являются правильными, но экспорт по-прежнему не является правильным. Я думаю, что мне здесь что-то не хватает ... – Tom

+0

извините, viertausend ... не Soner (он отредактировал мой пост) – Tom

+0

Нет проблем. Что вы подразумеваете под «изменением его с помощью элемента управления»? Ваше приложение предлагает панель инструментов, подобную панели инструментов? Можете ли вы сузить проблему до нескольких строк кода и разместить ее здесь? –

0

У меня проблема.

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

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

Еще раз спасибо viertausend за помощью

Смежные вопросы