WPF中的RichTextBox(转)

原文链接:http://blog.csdn.net/wuzhengqing1/article/details/7010902

取出richTextBox里面的内容

第一种方法:将richTextBox的内容以字符串的形式取出

string str = System.Windows.Markup.XamlWriter.Save(richTextBox.Document);

第二种方法:将richTextBox的类容以二进制数据的方法取出

     FlowDocument     doc    = richTextBox.Document;
     System.IO.Stream stream = new System.IO.MemoryStream();
     System.Windows.Markup.XamlWriter.Save(doc, stream);
     byte[] data = new byte[stream.Length];
     stream.Position = 0;
     stream.Read(data, 0, data.Length);
     stream.Close();

赋值给richTextBox

第一种方法:将字符串转换为数据流赋值给richTextBox中

  System.IO.StringReader sr = new System.IO.StringReader(str);
  System.Xml.XmlReader   xr = System.Xml.XmlReader.Create(sr);
  richTextBox1.Document     = (FlowDocument)System.Windows.Markup.XamlReader.Load(xr);

第二种方法:将二进制数据赋值给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    para = new Paragraph();//------Paragraph 类似于 html 的 P 标签
Run          run  = new Run(myString);//----Run 是一个 Inline 的标签
para.Inlines.Add(run);
doc.Blocks.Add(para);
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();
}

RichTextBox的操作:

       using System.Windows.Input;
       using System.Windows.Documents;
              //---复制,剪切,粘贴,撤销,重做
       ToolBarCopy.Command  = ApplicationCommands.Copy;
       ToolBarCut.Command   = ApplicationCommands.Cut;
       ToolBarPaste.Command = ApplicationCommands.Paste;
       ToolBarUndo.Command  = ApplicationCommands.Undo;
       ToolBarRedo.Command  = ApplicationCommands.Redo;
       //---文字居中/右/左
       ToolBarContentCenter.Command = EditingCommands.AlignCenter;
       ToolBarContentRight.Command  = EditingCommands.AlignRight;
       ToolBarContentLeft.Command   = EditingCommands.AlignLeft;
       //---有序/无序排列
       ToolBarNumbering.Command = EditingCommands.ToggleNumbering;
       ToolBarBullets.Command   = EditingCommands.ToggleBullets;//---字体变大
       int fontSize = Convert.ToInt32(richTextBox.Selection.GetPropertyValue(                                         TextElement.FontSizeProperty));
       fontSize++;
       richTextBox.Selection.ApplyPropertyValue(TextElement.FontSizeProperty,                                                 fontSize.ToString());
时间: 2024-11-13 15:52:26

WPF中的RichTextBox(转)的相关文章

在WPF中自定义控件

一, 不一定需要自定义控件在使用WPF以前,动辄使用自定义控件几乎成了惯性思维,比如需要一个带图片的按钮,但在WPF中此类任务却不需要如此大费周章,因为控件可以嵌套使用以及可以为控件外观打造一套新的样式就可以了.是否需要我们来自定义控件,这需要你考虑目前已有控件的真正逻辑功能而不要局限于外观,如果目前的控件都不能直觉地表达你的想法,那么你可以自己来打造一个控件,否则,也许我们仅仅改变一下目前控件的模板等就可以完成任务.很多人在自定义控件上经常犯的错误是:重复撰写已有的逻辑 二,UserContr

WPF 中的 loaded 事件和 Initialized 事件

在 WPF 中, 控件有 Loaded 和 Initialized 两种事件. 初始化和加载控件几乎同时发生, 因此这两个事件也几乎同时触发. 但是他们之间有微妙且重要的区别. 这些区别很容易让人误解. 这里介绍我们设计这些事件的背景. (不仅适用于 Control 类, 同样在通用类如 FrameworkElement 和 FrameworkContentElement 类也适用.) 下面是个小故事: Initialized 事件只说: 这个元素已经被构建出来,并且它的属性值都被设置好了,所以

WPF中使用VisualBrush的实例

本文实现一个名为"你来我往"的小程序,该程序管理着"张三"和"李四"两位童鞋拥有的现金,一开始,两人均拥有100美元的现金,随着将现金从其中一人转移至另外一人,两人拥有的现金数在不断变化,程序可以跟踪这种变化,并正确显示每人拥有的现金数.每次最多可以转移三张纸币,纸币的金额可以是5美元.10美元或者20美元. 程序运行后的效果如图1所示,我们点击"张三"右边的"5美元""10美元"&qu

WPF中静态引用资源与动态引用资源的区别

WPF中静态引用资源与动态引用资源的区别 WPF中引用资源分为静态引用与动态引用,两者的区别在哪里呢?我们通过一个小的例子来理解. 点击“Update”按钮,第2个按钮的文字会变成“更上一层楼”,而第1个按钮的文字没有变化. 原因是第1个按钮文字用的是静态引用资源,而第2个按钮文字用的是动态引用资源. 前台代码: <Window x:Class="PersonalLearning.StaticDynamicResourceDemo"        xmlns="http

01.WPF中制作无边框窗体

[引用:]http://blog.csdn.net/johnsuna/article/details/1893319 众所周知,在WinForm中,如果要制作一个无边框窗体,可以将窗体的FormBorderStyle属性设置为None来完成.如果要制作成异形窗体,则需要使用图片或者使用GDI+自定义绘制. 那么,在WPF中,我们怎样制作一个无边框窗体呢? 答案是将Window的WindowStyle属性设置为None,即WindowStyle="None" .如果是非矩形的异形窗体,则

在WPF中使用fortawesome之类的字体图标

我之前在博客中介绍过几个矢量图库网站,在WPF程序中,一般接触到的矢量图标资源有XAML.SVG.字体这三种格式.XAML是标准格式就不说了,SVG并不是直接支持的,不过微软提供了Expression Design可以非常方便我们将其转换为XAML格式的资源.而对于字体,虽然WPF是直接支持的,但由于字体图标其特殊性,要将其显示为图标还是需要费点劲的.本文这里就以Font-Awesome为例,介绍一下如何在WPF中使用字体图标. 首先添加一个样式,为了使用方便,建议直接做为全局样式: <Styl

WPF 中动态改变控件模板

在某些项目中,可能需要动态的改变控件的模板,例如软件中可以选择不同的主题,在不同的主题下软件界面.控件的样式都会有所不同,这时即可通过改变控件模板的方式实现期望的功能. 基本方法是当用户点击切换主题按钮是加载新的资源字典,并使用新加载的资源字典替代当前的资源字典这时要用到ResourceManager. 假设现有两个不同的资源字典文件Dictionary1.xaml和Dictionary2.xaml存在于Themes文件夹内: 在MainPage中使用其中一个资源字典作为默认样式文件: <Win

浏览器扩展系列————在WPF中定制WebBrowser快捷菜单

原文:浏览器扩展系列----在WPF中定制WebBrowser快捷菜单 关于如何定制菜单可以参考codeproject上的这篇文章:http://www.codeproject.com/KB/books/0764549146_8.aspx?fid=13574&df=90&mpp=25&noise=3&sort=Position&view=Quick&fr=26#xx0xx 本文主要讲述如何在这篇文章中的ShowContextMenu方法中弹出自己的Conte

浅析WPF中MVVM模式下命令与委托的关系

??各位朋友大家好,我是Payne,欢迎大家关注我的博客,我的博客地址是http://qinyuanpei.com.最近因为项目上的原因开始接触WPF,或许这样一个在现在来讲显得过时的东西,我猜大家不会有兴趣去了解,可是你不会明白对某些保守的项目来讲,安全性比先进性更为重要,所以当你发现银行这类机构还在使用各种"复古"的软件系统的时候,你应该相信这类东西的确有它们存在的意义.与此同时,你会更加深刻地明白一个道理:技术是否先进性和其流行程度本身并无直接联系.由此我们可以推论出:一项不流行