RichTextBoxExtended






4.85/5 (75投票s)
2005 年 2 月 10 日
4分钟阅读

484986

11692
一个带有富文本工具栏的 RichTextBox。
引言
大家好,我的朋友们。今天的控件是一个非常简单但实用的控件。它是一个自定义控件,包含一个 RichTextBox
和一个 Toolbar
。现在你可能会问:“这为什么如此重要和有用?”这是因为我自作主张地为你做了一些编码。工具栏不仅看起来漂亮,而且功能齐全。它包含了一些日常的、简单的、简单的功能,你希望用户在输入文本时能够使用。
背景
[俗套的闪回音乐和图形。]一切都始于我试图回想起如何在 RichTextBox
中插入一个富文本“印章”。在回忆的过程中,我对自己说:“自我,难道不是更容易不必每 6 个月就记住这些东西吗?”我的回答是肯定的。如果我只是构建一个控件来每次需要用户输入文本时使用,那会更容易。然后,想到 Code Project 上所有善良和乐于助人的人们,我决定分发我的控件,以便每个人都能学会如何做这些事情,并且他们还可以拥有一个预制的控件,随时可以使用。
使用控件
您可以使用此控件的两种方式。您可以将 RichTextBoxExtended.cs 文件添加到您的项目中,并通过在代码中设置控件来使用它,或者您可以将控件添加到您的工具栏中,然后将其拖放到您的 Form
上。还有一件事,如果您将 .cs 文件添加到您的项目中,您还必须在项目中添加一个 ImageList
,其中包含 Toolbar
的所有图像。我更喜欢(也推荐)后一种方法,因为我可以在窗体上看到控件,而且不必在我想要使用此控件的每个窗体上创建 ImageList
。
有几个属性将帮助您使用此控件,它们列在下面
AcceptsTab
AutoWordSelection
ReadOnly
ShowBold
ShowCenterJustify
ShowColors
ShowCopy
ShowCut
ShowFont
ShowFontSize
ShowItalic
ShowLeftJustify
ShowOpen
ShowPaste
ShowRedo
ShowRightJustify
ShowSave
ShowStamp
ShowStrikeout
ShowUnderline
ShowUndo
StampColor
StampAction
Toolbar
- 仅在运行时使用,在设计时所做的更改将不会保留。RichTextBox
- 仅在运行时使用,在设计时所做的更改将不会保留。
在所有这些属性中,大多数只是打开和关闭功能。唯一真正特殊的属性是 StampColor
、StampAction
、Toolbar
和 RichTextBox
。
StampColor
顾名思义。当向RichTextBox
添加印章时,文本的颜色就是这种颜色。StampAction
可以是三个值之一:EditedBy
、DateTime
或Custom
。EditBy
是一个字符串,读取“Edited by ” +CurrentPrincipal.Identity.Name
+ “ (theUserName
) on ” +DateTime.Now.ToLongDateString()
。DateTime
:DateTime.Now.ToLongDateString()
。Custom
:对于Custom
,您必须处理此控件的印章事件。
private void richTextBoxExtended1_Stamp(object sender, System.EventArgs e)
{
//holds our stamp text
StringBuilder stamp = new StringBuilder("");
if(richTextBoxExtended1.RichTextBox.Text.Length > 0)
stamp.Append("\r\n\r\n"); //add two lines for space
stamp.Append("Custom stamp goes here!\r\n");
//unselect everything basicly
richTextBoxExtended1.RichTextBox.SelectionLength = 0;
richTextBoxExtended1.RichTextBox.SelectionStart =
richTextBoxExtended1.RichTextBox.Text.Length;
//start new selection at the end of the text
richTextBoxExtended1.RichTextBox.SelectionColor
= richTextBoxExtended1.StampColor;
//make the selection blue
richTextBoxExtended1.RichTextBox.SelectionFont =
new Font(richTextBoxExtended1.RichTextBox.SelectionFont,
FontStyle.Bold); //set the selection font and style
richTextBoxExtended1.RichTextBox.AppendText(stamp.ToString());
//add the stamp to the richtextbox
richTextBoxExtended1.RichTextBox.Focus();
//set focus back on the richtextbox
}
关注点
经过这么长时间,最大的关注点是围绕一个小小控件所带来的反馈、兴趣和工作量。我一直无法像我希望的那样维护这个代码,但感谢所有一路以来提供帮助和建议的人。随着这篇更新文章的发布,也带来了关于 Framework 2.0 的 RichTextBoxExtended
的消息。所以,如果您想要 VS 2005 中的所有这些功能,请继续关注。任何想提供帮助的人,请给我发电子邮件。
好的,我从这个控件和这次经历中学到了什么?我了解了异或(Exclusive-OR)。这是一个非常有用的操作,在这个控件中为我节省了大约 100 行代码。在下面的代码中,OR 是“^
”。我能解释它的最好方法是,它接受两个值,如 00000001 和 00000010,并对它们进行比较。在下面的示例中,它检查样式,如果样式 = 00000001,它将更改为 00000000,但如果它是 00000000,它将更改为 00000001。这并不是对这个操作的最佳解释,所以在代码下方提供了一些链接供您参考。
rtb1.SelectionFont = new Font(rtb1.SelectionFont,
rtb1.SelectionFont.Style ^ FontStyle.Bold);
历史
- 1.0 - 初始发布 - 2004 年 1 月 31 日。
- 1.1 - 4/18/2005.
- 添加了字体选择器。
- 添加了字体大小选择器。
- 修复了当选择两种或多种字体类型时导致控件崩溃的错误。
- 清理了代码。
- 1.2 - 12/12/2005
- 修复了多个字体选择错误。现在,当同时选择两种不同的字体时,您可以添加字体样式(例如粗体和颜色)。
- 添加了一个名为
SelChanged
的选择更改事件。 - 添加了剪切、复制和粘贴按钮。
- 控件现在使用
ToolBarButton.Tag
属性而不是ToolBarButton.ToolTip
属性来处理按钮按下。现在您可以根据需要设置工具提示。 - 添加了
DetectUrls
属性。您可以在RichTextBox
中设置 HTTP 链接,然后单击它们即可打开系统默认浏览器。 - 添加了
ReadOnly
属性。 - 添加了
AcceptsTabs
属性。 - 添加了
AutoWordSelection
属性。 - 添加了 Ctrl+B、Ctrl+I、Ctrl+S、Ctrl+U、Ctrl+- 的键盘处理程序。
- 下载现在包含了所有图像。我还包括了一张打印图像。
- 清理了代码。