RichTextBox C#以编程方式触发某些功能

时间:2011-08-10 15:20:31

标签: c# wpf richtextbox

我想在RichTextBox Editor中以编程方式触发以下函数。

我已经有了这个:

//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 个答案:

答案 0 :(得分:4)

事实证明,有两种方法可以设置RichTextBox的文本样式。

其中一个是改变控件段落的样式。这仅适用于段落 - 而不是选择。

您可以通过.Document.Blocks的{​​{1}}属性获取可以转换为段落的块集​​合。这是一个代码示例,它将一些样式应用于第一段。

RichTextBox

如果可能,这是应用样式的首选方式。虽然它确实需要您编写更多代码,但它提供了编译时类型检查。

The other, would be to apply them to a text range

这允许您将样式应用于选择,但不进行类型检查。

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;

要非常小心,始终将正确的类型传递给ApplyPropertyValue函数,因为它不支持编译时类型检查。

例如,如果LineHeightProperty设置为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); ,而不是预期的45 Int32,则会获得运行时Double