Я хотел бы изменить размер шрифта фрагмента RTF, не стирая форматирование жирным / курсивом / подчеркиванием (проблема, аналогичная проблеме в this question). Принятый ответ - изменить выделение текстового поля до тех пор, пока свойство SelectionFont не станет нулевым, чтобы найти серии последовательно отформатированного текста, которые можно изменять индивидуально. Звучит разумно. Однако фактическое поведение элемента управления RichTextBox кажется несовместимым с документацией.
В документации для RichTextBox.SelectionFont MSDN указано:
Если в текущем выделенном тексте указано более одного шрифта, это свойство равно null.
Однако этот код, в котором используется смешанный полужирный / обычный текст, ведет себя не так, как вы ожидали:
var rtb = new RichTextBox {
Rtf = @"{\rtf1 This is \b bold\b0.}"
};
rtb.SelectAll();
// Now you'd expect rtb.SelectionFont to be null,
// but it actually returns a Font object
Есть ли другой надежный способ форматирования текста, чтобы я мог изменить размер шрифта, не нарушая другое форматирование. (Манипулирование RTF напрямую - это нормально, я не совсем настроен на использование WinForms для этого).