65.9K
CodeProject 正在变化。 阅读更多。
Home

RichTextBoxExtended

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.85/5 (75投票s)

2005 年 2 月 10 日

4分钟阅读

viewsIcon

484986

downloadIcon

11692

一个带有富文本工具栏的 RichTextBox。

RichTextBoxExtended ScreenShot

引言

大家好,我的朋友们。今天的控件是一个非常简单但实用的控件。它是一个自定义控件,包含一个 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 - 仅在运行时使用,在设计时所做的更改将不会保留。

在所有这些属性中,大多数只是打开和关闭功能。唯一真正特殊的属性是 StampColorStampActionToolbarRichTextBox

  • StampColor 顾名思义。当向 RichTextBox 添加印章时,文本的颜色就是这种颜色。
  • StampAction 可以是三个值之一:EditedByDateTimeCustom
  • EditBy 是一个字符串,读取“Edited by ” + CurrentPrincipal.Identity.Name + “ (theUserName) on ” + DateTime.Now.ToLongDateString()
  • DateTimeDateTime.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+- 的键盘处理程序。
    • 下载现在包含了所有图像。我还包括了一张打印图像。
    • 清理了代码。
© . All rights reserved.