
rtf 模版格式($:Text为内容):
public const String DefaultRtfTemplate =
@"{/rtf1/ansi/ansicpg936/deff0/deflang1033/deflangfe2052{/fonttbl{/f0/fnil/fcharset134 /'cb/'ce/'cc/'e5;}}"+
@"/viewkind4/uc1/pard/lang2052/f0/fs18$:Text}";
public static String GetDefaultRtf(String content)
{
return DefaultRtfTemplate.Replace("$:Text",content);
}
public static String GetRefContent(content)
{
System.Windows.Forms.RichTextBox rtBox = new System.Windows.Forms.RichTextBox();
rtBox.Rtf = GetDefaultRtf(content);
returnrtBox.Text;
}
与常用的TextBox一样,RichTextBox控件派生于TextBoxBase。所以,它与TextBox共享许,但许是不同的。TextBox常用于从用户处获取短文本字符串,而RichTextBox用于显示跟输入格式化的文本(例如,黑体、下划线和粗体)。它使用标准的格式化文本,称为Rich Text Format (富文本格式)或 RTF。
在里面的实例中,我们使用了标准的TextBox。也可以使用RichTextBox来完成该任务。实际上,如前面的样例所示,可以删除textBoxOutput 文本框,在它的位置上插入一个同名的RichTextBox,这个例子都会像以往那种运行。
如果这些文本框比上一节介绍的文本框更高级,我们都会希望它有一些新属性。表15-11中列举了RichTextBox的一些常见属性。
表 15-11
名 称
描 述
CanRedo
如果上一个被撤销的操作可以使用Redo重复,这个属性就是true
CanUndo
如果可以在RichTextBox上撤销上一个操作,这个属性就是true,注意,CanUndo在TextBoxBase中定义,所以也可以用于TextBox控件
RedoActionName
这个属性包括借助Redo方法执行的操作名称
DetectUrls
把这个属性设定为true,可以让控件检测URL,并格式化它们(在浏览器中是具有下划线的部分)
它对应于Text属性,但包括RTF格式的文本
SelectedRtf
使用这个属性可以获得或修改控件中被选中的RTF格式文本。如果把这种文本复制到另一个应用程序中,例如Word,该文本会保留所有的格式化信息
SelectedText
与SelectedRtf一样,可以使用这个属性获取或修改被选中的文本。但与该属性的RTF版本不同,所有的格式化信息就会丢失
SelectionAlignment
它表示选中文本的对齐方法,可以是Center, Left 或 Right
SelectionBullet
使用这个属性可以确认选中的文本是否格式化为项目符号的格式,或使用它插入或删除项目符号
BulletIndent
使用这个属性可以选定项目符号的缩进像素值
SelectionColor
这个属性可以设置选中文本的颜色
SelectionFont
这个属性可以设置选中文本的图标
SelectionLength
使用这个属性可以设定或获得选中文本的长度

SelectionType
这个属性包括了选中文本的信息。它可以确认是选取了一个或多个OLE对象,还是仅选取了文本
ShowSelectionMargin
如果把这个属性设定为truerichtextbox rtf,在RichTextBox 的右边还会出现一个页边距,这将使用户最容易选用文本
UndoActionName
如果用户选择撤销某个动作,该属性将获得该动作的名称
SelectionProtected
把这个属性设定为true,可以选定不设置文本的这些个别
从后面的列表可以看出,大多数新属性都与选中的文本有关。这是因为在用户处理其文本时,对他们应用的任何格式化操作都是对客户选择下来的文本进行的。万一没有选择出文本,格式化操作就从鼠标所在的位置起初应用,该位置称为插入点。
RichTextBox使用的大多数事件与TextBox使用的事件同样,表15-12中有几个有趣的新事件。
表 15-12
名 称
描 述
LinkedClick
在用户点击文本中的链接时,引发该事件
Protected
在用户尝试更改已经标记为受保护的文本时,引发该事件
(续表)
名 称
描 述
SelectionChanged
在选中文本出现差异时,引发该事故。如果因这些因素不期望用户更改选中的文本,就可以在该事件中禁止设置
在以下的实例中,将建立一个非常基本的文本编辑器。它表明了怎样修改文本的基本格式,如何读取和保存RichTextBox中的文本。为了简洁起见,这个例子被加载和储存到固定的文件中。
试试看:RichTextBox示例
与以往一样,首先设计窗体:
(1) 在C:/BegVCSharp/Chapter15目录下构建一个新的C# Windows应用程序richtextbox rtf,命名为RichTextBoxTest。
(2) 创建窗体,如图15-14所示。文本框textSize应是一个TextBox控件。richTextBoxText文本框应是一个RichTextBox控件。

图 15-14
(3) 如图15-14所示命名控件。
(4) 除了文本框以外,把其它控件的Text属性设定为其控件名称(但表示该控件类型的个别不算)。
(5) 把textBoxSize文本框的Text属性改为10。
(6) 锚定控件,如表15-13所示。
表 15-13
控 件 名 称
Anchor值
buttonLoad 和 buttonSave
Bottom
RichTextBoxText
Top, Left, Bottom, Right
其他控件
(7) 把窗体的MinimumSize属性值设置为Size属性的值。
示例的说明
前面是该实例的可见部分,下面添加代码。双击Bold按钮,在代码中添加Click事件处理程序。下面是该事件的代码:
private void buttonBold_Click(object sender, EventArgs e)

{
Font oldFont;
Font newFont;
// Get the font that is being used in the selected text
oldFont = this.richTextBoxText.SelectionFont;
// If the font is using bold style now, we should remove the
// Formatting
if (oldFont.Bold)
newFont = new Font(oldFont, oldFont.Style & ~FontStyle.Bold);
else
newFont = new Font(oldFont, oldFont.Style | FontStyle.Bold);
// Insert the new font and return focus to the RichTextBox
this.richTextBoxText.SelectionFont = newFont;
this.richTextBoxText.Focus();
}
首先获得当前选中文本使用的图标,并把它赋给一个局部变量。然后检测一下选中文本是否为黑体。如果是,就消除黑体修改;否则就设定黑体。使用oldFont作为原型,创建一个新字体,但按照需要添加或删除黑体格式。
最后,把新字体赋给选中的文本,把焦点返回给RichTextBox。Font对象详见第33章。
buttonItalic 和 buttonUnderline的事件处理程序的代码与前面的代码同样,但检测相关风格的代码不同。双击Italic 和 Underline两个按钮,添加以下的代码:
private void buttonItalic_Click(object sender, EventArgs e)
{
Font oldFont;
Font newFont;
// Get the font that is being used in the selected text
oldFont = this.richTextBoxText.SelectionFont;
// If the font is using Italic style now, we should remove it
if (oldFont.Italic)
newFont = new Font(oldFont, oldFont.Style & ~FontStyle.Italic);
else
newFont = new Font(oldFont, oldFont.Style | FontStyle.Italic);
// Insert the new font
this.richTextBoxText.SelectionFont = newFont;
this.richTextBoxText.Focus();
}
private void buttonUnderline_Click(object sender, System.EventArgs e)
{
Font oldFont;
Font newFont;
// Get the font that is being used in the selected text
oldFont = this.richTextBoxText.SelectionFont;
// If the font is using Underline style now, we should remove it
if (oldFont.Underline)
newFont = new Font(oldFont, oldFont.Style & ~FontStyle.Underline);
else
newFont = new Font(oldFont, oldFont.Style | FontStyle.Underline);
// Insert the new font

this.richTextBoxText.SelectionFont = newFont;
this.richTextBoxText.Focus();
}
双击最后一个格式化按钮Center,添加以下的代码:
private void buttonCenter_Click(object sender, System.EventArgs e)
{
if (this.richTextBoxText.SelectionAlignment == HorizontalAlignment.Center)
this.richTextBoxText.SelectionAlignment = HorizontalAlignment.Left;
else
this.richTextBoxText.SelectionAlignment = HorizontalAlignment.Center;
this.richTextBoxText.Focus();
}
这里需要检查一下另一个属性SelectionAlignment,看看选中的文本是否即将居中对齐,因为我们期望按钮像一个开关这样运作。如果文本已居中,就使它左对齐,否则就使它居中。HorizontalAlignment是一个枚举,其值可以是Left、Right、Center、Justify和 NotSet。在本例中,只检测一下是否修改了Center,如果终于修改了,就把对齐方法修改为Left。如果不是,就设置为Center。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-140347-1.html
也可以先把我们的民用渔船去相关海域打鱼作业