WPF 中RichTextBox控件用法细讲
1. 取得已被选中的内容:
(1)使用RichTextBox.Document.Selection属性
(2)访问RichTextBox.Document.Blocks属性的“blocks”中的Text
2.WPF RictTextBox内容清空方式:txtXml.Document.Blocks.Clear();
3. 从文件中读出纯文本文件后放进RichTextBox或直接将文本放进RichTextBox中:
private void LoadTextFile(RichTextBox richTextBox, string filename) { richTextBox.Document.Blocks.Clear(); using (StreamReader streamReader = File.OpenText(filename)) { Paragraph paragraph = new Paragraph(); paragraph.Text = streamReader.ReadToEnd(); richTextBox.Document.Blocks.Add(paragraph); } } private void LoadText(RichTextBox richTextBox, string txtContent) { richTextBox.Document.Blocks.Clear(); Paragraph paragraph = new Paragraph(); paragraph.Text = txtContent; richTextBox.Document.Blocks.Add(paragraph); }
4. 取得指定RichTextBox的内容:
private string GetText(RichTextBox richTextBox) { TextRange textRange = new TextRange(richTextBox.Document.ContentStart, richTextBox.Document.ContentEnd); return textRange.Text; }
5. 将RTF (rich text format)放到RichTextBox中:
private static void LoadRTF(string rtf, RichTextBox richTextBox) { if (string.IsNullOrEmpty(rtf)) { throw new ArgumentNullException(); } TextRange textRange = new TextRange(richTextBox.Document.ContentStart, richTextBox.Document.ContentEnd); using (MemoryStream rtfMemoryStream = new MemoryStream()) { using (StreamWriter rtfStreamWriter = new StreamWriter(rtfMemoryStream)) { rtfStreamWriter.Write(rtf); rtfStreamWriter.Flush(); rtfMemoryStream.Seek(0, SeekOrigin.Begin); //Load the MemoryStream into TextRange ranging from start to end of RichTextBox. textRange.Load(rtfMemoryStream, DataFormats.Rtf); } } }
6. 将文件中的内容加载为RichTextBox的内容
private static void LoadFile(string filename, RichTextBox richTextBox) { if (string.IsNullOrEmpty(filename)) { throw new ArgumentNullException(); } if (!File.Exists(filename)) { throw new FileNotFoundException(); } using (FileStream stream = File.OpenRead(filename)) { TextRange documentTextRange = new TextRange(richTextBox.Document.ContentStart, richTextBox.Document.ContentEnd); string dataFormat = DataFormats.Text; string ext = System.IO.Path.GetExtension(filename); if (String.Compare(ext, ".xaml", true) == 0) { dataFormat = DataFormats.Xaml; } else if (String.Compare(ext, ".rtf", true) == 0) { dataFormat = DataFormats.Rtf; } documentTextRange.Load(stream, dataFormat); } }
7. 将RichTextBox的内容保存为文件:
private static void SaveFile(string filename, RichTextBox richTextBox) { if (string.IsNullOrEmpty(filename)) { throw new ArgumentNullException(); } using (FileStream stream = File.OpenWrite(filename)) { TextRange documentTextRange = new TextRange(richTextBox.Document.ContentStart, richTextBox.Document.ContentEnd); string dataFormat = DataFormats.Text; string ext = System.IO.Path.GetExtension(filename); if (String.Compare(ext, ".xaml", true) == 0) { dataFormat = DataFormats.Xaml; } else if (String.Compare(ext, ".rtf", true) == 0) { dataFormat = DataFormats.Rtf; } documentTextRange.Save(stream, dataFormat); } }
读取与写入图片和文本操作::::
读取RichTextBox的内容到string,将字符串保存到数据库的方法就不写了,大家都会
string GetTextByRichBox(RichTextBox box) { MemoryStream s = new MemoryStream(); TextRange documentTextRange = new TextRange(box.Document.ContentStart, box.Document.ContentEnd); documentTextRange.Save(s, DataFormats.XamlPackage); return Convert.ToBase64String(s.ToArray()); }
将string的内容转换成图片显示在RichTextBox中
private ShowTextToRichBox(RichTextBox box) { MemoryStream s = new MemoryStream((Convert.FromBase64String(Convert.ToString(dr[“D_DESC”])))); TextRange TR = new TextRange(box.Document.ContentStart, box.Document.ContentEnd); TR.Load(s, DataFormats.XamlPackage); }