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

[WinForms] 类似 Visual Studio 的 RichTextBox 工具提示

starIconstarIconstarIconstarIconstarIcon

5.00/5 (7投票s)

2012年9月24日

CPOL

2分钟阅读

viewsIcon

46952

downloadIcon

2922

C# RichTextBox 工具提示,类似于 Visual Studio 的。

简介

这是我在 CodeProject 上的第一篇帖子。

促使我撰写这篇文章的主要想法是,我认为它对您可能有用,就像对我一样! 首先,我在网上搜索过类似此组件的东西,但不幸的是,我没有找到任何现成的控件或组件,可以在我需要时在我的项目中使用的。 因此,我决定停止依赖他人的工作:p 并开始自己制作。 组件的工作方式如图所示:

组件依赖

该组件继承自标准的 ToolTip,并依赖于 RichTextBox 控件的以下 .NET 方法:

  • GetCharIndexFromPosition(Point)
  • GetLineFromCharIndex(int)

该组件可以自定义样式:

  • 您可以为工具提示标题/工具提示描述文本指定自己的颜色。
  • 您可以为工具提示标题/工具提示描述文本的每个文本指定自己的字体。
  • 您可以设置自己的背景位图。

如何使用该组件

分步说明

  1. 在您的项目上添加对类库文件“RTB_ToolTip.dll”的引用。
  2. 在 VS 设计器中添加一个新的 RichTextBox 控件,并将其命名为“richTextBox1”。
  3. 在 VS 编辑器中添加以下 using 指令:
  4. using RTB_ToolTip;
  5. 在“InitializeComponent”之后或“Load”事件(或您想要的位置)中,执行以下操作
  6. // Initialize a new RichTextBoxToolTip component
    RichTextBoxToolTip rtb = new RichTextBoxToolTip();
    
    // Set the desired RichTextBox control to use the ToolTip with
    rtb.RichTextBox = richTextBox1;
    
    // Initialize a new dictionary to fill in the desired information data
    eDictionary dict = new eDictionary();
    dict.Add("Title", "Description of the ToolTip here");
    dict.Add("abc", "Alphabets :)");
    dict.Add("123", "Numbers ;)");
    
    // Assigne the dictionary to the RichTextBoxToolTip
    rtb.Dictionary = dict;
  7. 现在按下 F5 按钮或单击调试按钮,以查看新的 RichTextBox 行为。
  8. 当窗口显示时,在 richTextBox1 控件中键入类似“Title”/“abc”/“123”的内容(引号不是必需的)。 现在将鼠标放在您键入的单词上,工具提示将自动显示,如下所示

其他信息

  • 如果您想更改工具提示标题/描述颜色,请执行以下操作
  • rtb.TitleBrush = Brushes.Blue;  

    或者

    rtb.DescriptionBrush = new SolidBrush(Color.Red);
  • 您还可以设置工具提示标题的前置和后置文本。 例如:
  • rtb.TitlePrefix = "Definition for '";
    rtb.TitleSuffix = "':";

    结果将如下所示

    您可以通过相同的方式访问其他属性(TitleFont / DescriptionFont / BackgroundImage...)。

  • 要自定义“SyntaxCheking”类确定单词开始和结束边界的方式,您可以重置 RichTextBoxToolTip.Chars 属性。 例如:
  • rtb.Chars = new List<Char>() {' ', '(', ')', '?'};

它是如何工作的?

如果源代码看起来有点复杂难以理解,我很抱歉,我会尝试告诉您它是如何工作的。 请参见下图

© . All rights reserved.