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

Adding "Balloon" style to ToolTip provider

, 29 Apr 2005
Rate this:
Please Sign up or sign in to vote.
Adding "Balloon" style to ToolTip provider.

Sample Image - Balloon_ToolTip.jpg Red Balloon toolTip


There are a lot of articles about "balloon" Tooltip, many lines of codes written with classes which solved the problem. Here I show yet another solution which I think is the most easiest and does not influence existing System.Windows.Forms.ToolTip implementation.


Probably you may know, reflection is a big advantage in .NET Framework, and I think will use it this time also. System.Windows.Forms.ToolTip class holds handle to the native tooltip window. This handle is non public, so we need to use reflection to get this member. Then we can change the style of the window to "balloon".


Need to call function SetBalloonStyle from place where the ToolTip window handle is created. In my example, I do it in OnLoad of the Form. If you call the function with handle which is not valid, exception will be thrown.

protected override void OnLoad(EventArgs e)
  base.OnLoad (e);  
  // set toolTip native window style to "balloon".
  NativeMethods.SetBalloonStyle ( toolTip1 );

Final Notes

Same approach can be used in many places, like the example in System.Windows.Forms.PropertyGrid to make it flat.


  • 02/05/05

    Added SetBackColor function, showing how you can change the color of the tooltip window.


This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here


About the Author

Mihail Stefanov

United States United States

Comments and Discussions

QuestionNice work PinprofessionalMike Hankey18-Aug-14 7:18 
Generalgood work Pinmemberamin keshani4-Nov-06 22:45 
Generalc# .net 2005 error Pinmemberradnix15-Apr-06 6:36 
I've been using this really great balloon effect for tooltip with success in c# .net 2003 but when trying to compile in .net 2005 I get:

PInvokeStackImbalance was detected
Message: A call to PInvoke function 'BpMain!ToolTipBalloon.NativeMethods::SetWindowLong' has unbalanced the stack. This is likely because the managed PInvoke signature does not match the unmanaged target signature. Check that the calling convention and parameters of the PInvoke signature match the target unmanaged signature.

public static void SetBalloonStyle ( ToolTip toolTip )
NativeWindow window = GetNativeWindow ( toolTip );
//-NativeMethods.cs: error on next line
NativeMethods.SetWindowLong ( window.Handle, GWL_STYLE , WS_POPUP | TTS_BALLOON | TTS_NOFADE );


Any ideas on what to do?

Thanks ahead!

...of all the things I've lost, I miss my mind the most.

-- modified at 11:49 Saturday 15th April, 2006
GeneralRe: c# .net 2005 error PinmemberMihail Stefanov15-Apr-06 11:38 
GeneralRe: c# .net 2005 error Pinmemberbhupinders14-Mar-07 21:59 
QuestionRight to Left Balloon PinmemberAmirSasan30-Oct-05 11:53 
AnswerRe: Right to Left Balloon PinmemberMihail Stefanov2-Nov-05 11:47 
GeneralRe: Right to Left Balloon PinmemberAmirSasan3-Nov-05 11:52 
Generalgood idea PinmemberNeil Yao27-Oct-05 21:25 
GeneralRe: good idea PinmemberMihail Stefanov27-Oct-05 21:30 
GeneralCustom balloon content PinmemberWillemM5-Jul-05 1:01 
GeneralRe: Custom balloon content PinmemberMihail Stefanov5-Jul-05 2:18 
GeneralAny news? Pinmember_JERKER_17-Oct-05 23:42 
GeneralRe: Any news? PinmemberMihail Stefanov27-Oct-05 21:29 
GeneralRe: Custom balloon content PinmemberMihail Stefanov2-Nov-05 11:44 
GeneralAwesome! PinmemberNick Z.5-May-05 8:46 
GeneralRe: Awesome! PinmemberRichNFamous19-May-05 1:02 
GeneralGood job! PinmemberHyperX2-May-05 8:43 
GeneralRe: Good job! PinmemberMihail Stefanov2-May-05 10:02 
GeneralRe: Good job! PinmemberHyperX2-May-05 12:12 

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.150414.1 | Last Updated 29 Apr 2005
Article Copyright 2005 by Mihail Stefanov
Everything else Copyright © CodeProject, 1999-2015
Layout: fixed | fluid