Click here to Skip to main content
Click here to Skip to main content

[WinForms] RichTextBox ToolTip like Visual-Studio's

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

Introduction    

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;  

    Or:

    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:

License

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
Student
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++.
Follow on   Google+

Comments and Discussions

 
GeneralMy vote of 5 PinmemberMember 807057813-Jul-13 10:25 
Questionnice work sir but got a question here PinmemberElegiac2-May-13 20:01 
Question@Bvnvbn Sdasdg PinmemberHicham El Horri25-Mar-13 15:18 
QuestionIt's really odd behaviour!! PinmemberHicham El Horri25-Mar-13 15:12 
QuestionSmall Issue Pinmembermikeaerni17-Mar-13 17:00 
QuestionIs Very Good But I hava a Question to Ask PinmemberBvnvbn Sdasdg5-Jan-13 6:34 
QuestionThanks PinmemberHicham El Horri27-Oct-12 20:55 
GeneralMy vote of 5 Pinmemberpcs041425-Oct-12 4:10 
QuestionCool PinmemberZac Greve8-Oct-12 3:32 
QuestionGood Work PinmemberAl-Samman Mahmoud24-Sep-12 8:50 
AnswerRe: Good Work PinmemberHicham 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 | Mobile
Web03 | 2.8.140721.1 | Last Updated 25 Sep 2012
Article Copyright 2012 by Hicham El Horri
Everything else Copyright © CodeProject, 1999-2014
Terms of Service
Layout: fixed | fluid