WPF 入门教程RichTextBox使用
WPF 中的 RichTextBox 控件允许您查看和编辑文本、段落、图像、表格和其他富文本格式的内容。
XAML 的 <RichTextBox> 元素表示 WPF RichTextBox 控件。
<RichTextBox></RichTextBox>
Width 和 Height 属性表示 RichTextBox 的宽度和高度。Name 属性表示控件的名称,它是控件的唯一标识符。Margin 属性指示 RichTextBox 在父控件上的位置。HorizontalAlignment 和 VerticalAlignment 属性用于设置水平和垂直对齐方式。
以下代码片段设置 RichTextBox 控件的名称、高度和宽度。该代码还将水平对齐设置为左对齐,垂直对齐设置为顶部。
<RichTextBox Margin= "10,10,0,13" Name= "RichTextBox1" HorizontalAlignment= "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/1504813164134436864Demo下载: