RichTextBox C # программно запускает определенные функции - PullRequest
2 голосов
/ 10 августа 2011

Я хочу запустить следующие функции программно в моем редакторе RichTextBox.

У меня уже есть это:

//Copy   
TextRange range = new TextRange(doc.Editor.Selection.Start, doc.Editor.Selection.End);
                Clipboard.SetText(range.Text);
    //Paste  
     Editor.Paste();
   // PageDown 
     Editor.PageDown();
   // PageUp     
     Editor.PageUp();
    //Text Size 
     Editor.FontSize = number;
    //Undo    
     Editor.Undo();
    //Redo    
     Editor.Redo();

Я хочу применить следующее к выбранному в данный момент тексту в RichTextBox:


AlignLeft
AlignRight
Центр
Увеличение / уменьшение межстрочного интервала
Полужирный
Подчеркнутый
Курсив

1 Ответ

4 голосов
/ 10 августа 2011

Как выясняется, есть два способа установки стилей текста RichTextBox.

Один из них - изменение стилей абзацев элемента управления.Это работает только для абзацев, а не для выбора.

Вы получаете набор блоков, которые можно преобразовать в абзацы, через свойство .Document.Blocks RichTextBox.Вот пример кода, который применяет некоторые стили к первому абзацу.

Paragraph firstParagraph = Editor.Document.Blocks.FirstBlock as Paragraph;
firstParagraph.TextAlignment = TextAlignment.Right;
firstParagraph.TextAlignment = TextAlignment.Left;
firstParagraph.FontWeight = FontWeights.Bold;
firstParagraph.FontStyle = FontStyles.Italic;
firstParagraph.TextDecorations = TextDecorations.Underline;
firstParagraph.TextIndent = 10;
firstParagraph.LineHeight = 20;

Когда это возможно, это предпочтительный способ применения стилей.Хотя для этого требуется написать больше кода, он обеспечивает проверку типов во время компиляции.

Другой способ - применить их к текстовому диапазону

Это позволяет применятьстили для выбора, но без проверки типов.

TextRange selectionRange = Editor.Selection as TextRange;
selectionRange.ApplyPropertyValue(TextElement.FontWeightProperty, FontWeights.Bold);
selectionRange.ApplyPropertyValue(TextElement.FontStyleProperty, FontStyles.Italic);
selectionRange.ApplyPropertyValue(Inline.TextDecorationsProperty, TextDecorations.Underline);
selectionRange.ApplyPropertyValue(Paragraph.LineHeightProperty, 45.0);
selectionRange.ApplyPropertyValue(Paragraph.TextAlignmentProperty, TextAlignment.Right);

Будьте очень осторожны, всегда передавая правильные типы в функцию ApplyPropertyValue, поскольку она не поддерживает проверку типов во время компиляции.

Например, если для свойства LineHeightProperty было установлено значение 45, то есть Int32, вместо ожидаемого Double, вы получите время выполнения ArgumentException.

...