Click here to Skip to main content
11,812,712 members (73,320 online)
Click here to Skip to main content

Tagged as

[WinForms] RichTextBox ToolTip like Visual-Studio's

, 25 Sep 2012 CPOL 16.8K 1.4K 18
Rate this:
Please Sign up or sign in to vote.
C# RichTextBox tooltip like Visual Studio's.


This is my first post on the CodeProject.

The main idea that pushed me to write this article is that I thought it might be useful to you as it was for me! First of all I searched on the net for something like this component, but unfortunately I didn't find anything like a readymade control or component to use in a project of mine when I was in need for it. So, I decided to stop relying on others work :p and started to make my own. The component works as the following figure shows: 

The component  dependencies

The component inherits from the standard ToolTip and relies on the following .NET methods of the RichTextBox control:  

  • GetCharIndexFromPosition(Point)
  • GetLineFromCharIndex(int)

The component is style-able: 

  • You can specify your own color for the text of both; ToolTip title / ToolTip description text. 
  • You can specify your own font for the text for each of both; ToolTip title / ToolTip description text.
  • You can set your own background bitmap.

How to use the component

Here's a step-by-step:

  1. On your project add a reference to the class library file "RTB_ToolTip.dll".
  2. On the VS designer add a new RichTextBox control and let's name it "richTextBox1"
  3. On the VS editor add the following using-directive: 
  4. using RTB_ToolTip;
  5. After the 'InitializeComponent' or on the 'Load' event (or wherever you want) do the following:
  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. Now push F5 button or click on Debug button to see your new RichTextBox behavior.
  8. When the window is shown, type on the richTextBox1 control something like this "Title" / "abc" / "123" (quotes are not necessary). Now put the mouse over a word you typed and the ToolTip will show up automatically like this:

Additional info  

  • If you want to change ToolTip Title/Description color, do the following:
  • rtb.TitleBrush = Brushes.Blue;  


    rtb.DescriptionBrush = new SolidBrush(Color.Red);
  • You can also set your own pre and after text of the ToolTip title. For example: 
  • rtb.TitlePrefix = "Definition for '";
    rtb.TitleSuffix = "':";

    The result would look like this:

    You can access the other properties (TitleFont / DescriptionFont / BackgroundImage...) by the same way.

  • For customizing the way the 'SyntaxCheking' class determines words' start and end boundaries you can reset that in the RichTextBoxToolTip.Chars property. Example: 
  • rtb.Chars = new List<Char>() {' ', '(', ')', '?'};

How does it work?  

Sorry if the source code looks a little bit complicated to understand, I'll try to tell you how it works. See the following figure please:


This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


About the Author

Hicham El Horri
Morocco Morocco
He is a 21 year-old student studying at Mohammed I University (in Oujda - Morocco). Born in Aklim - Berkane, Morocco.
Hates discrimination with all its kinds.
He is interested in programming on Visual Studio since 2009.
Current programming languages:
+ VBScript (for both: Windows & web).
+ JScript (for both: Windows & web).
+ Visual Basic 6.0 and higher.
+ C# 2003 and higher.
+ RealBasic.
+ Html.
+ Still learning C++.

You may also be interested in...

Comments and Discussions

GeneralMy vote of 5 Pin
Member 807057813-Jul-13 10:25
memberMember 807057813-Jul-13 10:25 
Questionnice work sir but got a question here Pin
Elegiac2-May-13 20:01
memberElegiac2-May-13 20:01 
Question@Bvnvbn Sdasdg Pin
Hicham El Horri25-Mar-13 15:18
memberHicham El Horri25-Mar-13 15:18 
QuestionIt's really odd behaviour!! Pin
Hicham El Horri25-Mar-13 15:12
memberHicham El Horri25-Mar-13 15:12 
QuestionSmall Issue Pin
mikeaerni17-Mar-13 17:00
membermikeaerni17-Mar-13 17:00 
QuestionIs Very Good But I hava a Question to Ask Pin
Bvnvbn Sdasdg5-Jan-13 6:34
memberBvnvbn Sdasdg5-Jan-13 6:34 
QuestionThanks Pin
Hicham El Horri27-Oct-12 20:55
memberHicham El Horri27-Oct-12 20:55 
GeneralMy vote of 5 Pin
pcs041425-Oct-12 4:10
memberpcs041425-Oct-12 4:10 
QuestionCool Pin
Zac Greve8-Oct-12 3:32
memberZac Greve8-Oct-12 3:32 
QuestionGood Work Pin
Al-Samman Mahmoud24-Sep-12 8:50
memberAl-Samman Mahmoud24-Sep-12 8:50 
AnswerRe: Good Work Pin
Hicham El Horri24-Sep-12 22:07
memberHicham El Horri24-Sep-12 22:07 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

| Advertise | Privacy | Terms of Use | Mobile
Web01 | 2.8.151002.1 | Last Updated 25 Sep 2012
Article Copyright 2012 by Hicham El Horri
Everything else Copyright © CodeProject, 1999-2015
Layout: fixed | fluid