WPF-20:richtextbox相关操作(转)
WPF中的richtextbox与winform中的richtextbox的使用不同,看看下面的基本操作:
一、取出richTextBox里面的内容
(1)将richTextBox的内容以字符串的形式取出
string xw = System.Windows.Markup.XamlWriter.Save(richTextBox.Document);
(2)将richTextBox的类容以二进制数据的方法取出
FlowDocument document = richTextBox.Document; System.IO.Stream s = new System.IO.MemoryStream(); System.Windows.Markup.XamlWriter.Save(document, s); byte[] data = new byte[s.Length]; s.Position = 0; s.Read(data, 0, data.Length); s.Close();
二、richTextBox赋值
(1)将字符串转换为数据流赋值给richTextBox中
System.IO.StringReader sr = new System.IO.StringReader(xw); System.Xml.XmlReader xr = System.Xml.XmlReader.Create(sr); richTextBox1.Document = (FlowDocument)System.Windows.Markup.XamlReader.Load(xr);
(2)将二进制数据赋值给richTextBox
System.IO.Stream ss = new System.IO.MemoryStream(data); FlowDocument doc = System.Windows.Markup.XamlReader.Load(ss) as FlowDocument; ss.Close(); richTextBox1.Document = doc;
三、清空RichTextBox的方法
System.Windows.Documents.FlowDocument doc = RichTextBox.Document; doc.Blocks.Clear();
四、如何将一个String类型的字符串赋值给richTextBox
myRTB.Document = new FlowDocument(new Paragraph(new Run(myString))); FlowDocument doc = new FlowDocument(); Paragraph p = new Paragraph(); // Paragraph 类似于 html 的 P 标签 Run r = new Run(myString); // Run 是一个 Inline 的标签 p.Inlines.Add(r); doc.Blocks.Add(p); myRTB.Document = doc;
五、将richTextBox中的内容以rtf的格式完全取出
string rtf = string.Empty; TextRange textRange = new TextRange(richTextBox.Document.ContentStart, richTextBox.Document.ContentEnd); using (System.IO.MemoryStream ms = new System.IO.MemoryStream()) { textRange.Save(ms, System.Windows.DataFormats.Rtf); ms.Seek(0, System.IO.SeekOrigin.Begin); System.IO.StreamReader sr = new System.IO.StreamReader(ms); rtf = sr.ReadToEnd(); }
六、其他操作
复制: ToolBarCopy.Command = System.Windows.Input.ApplicationCommands.Copy; 剪切: toolBarCut.Command = System.Windows.Input.ApplicationCommands.Cut; 粘贴: ToolBarPaste.Command = System.Windows.Input.ApplicationCommands.Paste; 撤销: ToolBarUndo.Command = System.Windows.Input.ApplicationCommands.Undo; 复原: ToolBarRedo.Command = System.Windows.Input.ApplicationCommands.Redo; 文字居中: toolBarContentCenter.Command = System.Windows.Documents.EditingCommands.AlignCenter; 文字居右: toolBarContentRight.Command = System.Windows.Documents.EditingCommands.AlignRight; 文字居左: toolBarContentLeft.Command = System.Windows.Documents.EditingCommands.AlignLeft; 有序排列: ToolBarNumbering.Command = System.Windows.Documents.EditingCommands.ToggleNumbering; 无序排列: ToolBarBullets.Command = System.Windows.Documents.EditingCommands.ToggleBullets; 字体变大: int fontSize = Convert.ToInt32(richTextBox.Selection.GetPropertyValue(TextElement.FontSizeProperty)); fontSize++; richTextBox.Selection.ApplyPropertyValue(TextElement.FontSizeProperty, fontSize.ToString());
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)