WPF 入门教程RichTextBox使用

WPF 中的 RichTextBox 控件允许您查看和编辑文本、段落、图像、表格和其他富文本格式的内容。

XAML 的 <RichTextBox> 元素表示 WPF RichTextBox 控件。

<RichTextBox></RichTextBox>  

Width 和 Height 属性表示 RichTextBox 的宽度和高度。Name 属性表示控件的名称,它是控件的唯一标识符。Margin 属性指示 RichTextBox 在父控件上的位置。Horizo​​ntalAlignment 和 VerticalAlignment 属性用于设置水平和垂直对齐方式。

以下代码片段设置 RichTextBox 控件的名称、高度和宽度。该代码还将水平对齐设置为左对齐,垂直对齐设置为顶部。

<RichTextBox Margin= "10,10,0,13"  Name= "RichTextBox1"  Horizo​​ntalAlignment= "Left"  VerticalAlignment= "Top"  Width= "500"  Height= "300"  />  

显示和编辑文本

RichTextBox 控件承载 RichTextBoxItem 元素的集合。每个项目可以是任何流内容元素。下面的代码片段向 RichTextBox 控件添加了几个项目。

<RichTextBox Margin="10,10,0,13" Name="RichTextBox1" HorizontalAlignment="Left" VerticalAlignment="Top" Width="500" Height="300">  
    <FlowDocument>  
        <Paragraph> I am a flow document. Would you like to edit me? <Bold>Go ahead.</Bold>  
        </Paragraph>  
        <Paragraph Foreground="Blue"> I am blue I am blue I am blue. </Paragraph>  
    </FlowDocument>  
</RichTextBox>  

上面的代码生成图 1,您可以在其中立即开始编辑文本。



带有可编辑文本的 RichTextBox

动态创建和使用 RichTectBox

我们看到了如何在 XAML 中创建和使用 RichTextBox。WPF 提供了表示 RichTextBox 控件的 RichTextBox 类。我们还可以使用 C# 动态创建和使用 RichTextBox 控件。

代码创建一个 FlowDocument,将一个段落添加到流文档并将 RichTextBox 的 Document 属性设置为 FlowDocument。

private void CreateAndLoadRichTextBox() {  
    // Create a FlowDocument  
    FlowDocument mcFlowDoc = newFlowDocument();  
    // Create a paragraph with text  
    Paragraph para = newParagraph();  
    para.Inlines.Add(newRun("I am a flow document. Would you like to edit me? "));  
    para.Inlines.Add(newBold(newRun("Go ahead.")));  
    // Add the paragraph to blocks of paragraph  
    mcFlowDoc.Blocks.Add(para);  
    // Create RichTextBox, set its hegith and width  
    RichTextBox mcRTB = newRichTextBox();  
    mcRTB.Width = 560;  
    mcRTB.Height = 280;  
    // Set contents  
    mcRTB.Document = mcFlowDoc;  
    // Add RichTextbox to the container  
    ContainerPanel.Children.Add(mcRTB);  
}  


在 RichTextBox 中启用拼写检查

RichTextBox 控件带有开箱即用的拼写检查功能。将 SpellCheck.IsEnabled 属性设置为 true 将启用 RichTextBox 中的拼写检查。

SpellCheck.IsEnabled="true"

您可以在代码中设置它如下,

mcRTB.SpellCheck.IsEnabled = true ;

现在,如果您键入一些文本,错误的单词将带有红色下划线。

在 RichTextBox 中加载文档

我们将在菜单项单击事件处理程序上打开一个文本文件。

privatevoid OpenMenuItem_Click(object sender, RoutedEventArgs e) {  
    OpenFileDialog dlg = newOpenFileDialog();  
    dlg.InitialDirectory = "c:\\";  
    dlg.Filter = "Text files (*.txt)|*.txt|All Files (*.*)|*.*";  
    dlg.RestoreDirectory = true;  
    if (dlg.ShowDialog() == System.Windows.Forms.DialogResult.OK) {  
        LoadTextDocument(dlg.FileName);  
    }  
} 

在此菜单项单击事件处理程序上,我们通过传递文本文件名调用名为 LostTextDocument 的方法。在这个方法中,我们将文本文件读入一个 FileStream 对象,并将这个 FileStream 加载到一个 TextRange 对象中,即 RichTextBox 控件的范围。

privatevoid LoadTextDocument(string fileName) {  
    TextRange range;  
    System.IO.FileStream fStream;  
    if (System.IO.File.Exists(fileName)) {  
        range = newTextRange(RichTextBox1.Document.ContentStart, RichTextBox1.Document.ContentEnd);  
        fStream = new System.IO.FileStream(fileName, System.IO.FileMode.OpenOrCreate);  
        range.Load(fStream, System.Windows.DataFormats.Text);  
        fStream.Close();  
    }  
}  

将 RichTextBox 内容转换为字符串

RichTextBox 中没有直接的方法或属性可以将 RichTextBox 的文档或内容提取为字符串。要将内容转换为字符串,我们首先需要读取 TextRange 对象中 RichTextBox 的内容,并使用 TextRange.Text 属性将其转换为字符串。

以下代码片段从头到尾读取 RichTextBox 内容并转换为字符串。

string ConvertRichTextBoxContentsToString(RichTextBox rtb) {  
    TextRange textRange = newTextRange(rtb.Document.ContentStart, rtb.Document.ContentEnd);  
    return textRange.Text;  
}  

推荐一款WPF MVVM框架开源项目:Newbeecoder.UI

https://www.zhihu.com/video/1504813164134436864

Demo下载:

编辑于 2022-05-03 13:23