I need to draw a text string on the form. In order to do it I create Paint
event handler and place a command
e.Graphics.DrawString(...)
Unfortunately if other controls on the form overlap with this string, they
hide it.
How can I make the string appear on top of other controls? (other controls
are defined at design time and I don't paint them)
You can draw the string directly onto the desktop...
You need to import the GetDC and ReleaseDC methods like so:
> [DllImport("User32.dll")]
>
[quoted text clipped - 5 lines]
>
> public static extern void ReleaseDC(IntPtr dc);
then you can get the DC, greate a Graphics for it and draw on it..
IntPtr dc=GetDC(IntPtr.Zero);
Graphics g=Graphics.FromHdc(dc);
//draw on the desktop here, remembering to convert client pixels to
screen pixels
g.Dispose();
ReleaseDC(dc);

Signature
Bob Powell [MVP]
Visual C#, System.Drawing
Ramuseco Limited .NET consulting
http://www.ramuseco.com
Find great Windows Forms articles in Windows Forms Tips and Tricks
http://www.bobpowell.net/tipstricks.htm
Answer those GDI+ questions with the GDI+ FAQ
http://www.bobpowell.net/faqmain.htm
All new articles provide code in C# and VB.NET.
Subscribe to the RSS feeds provided and never miss a new article.
> I need to draw a text string on the form. In order to do it I create Paint
> event handler and place a command
[quoted text clipped - 3 lines]
> How can I make the string appear on top of other controls? (other controls
> are defined at design time and I don't paint them)
Gregory Khra - 21 Mar 2008 14:23 GMT
Your suggestion will probably help, but I was hoping there is more straight
forward way. All I need is to make my Paint handler execute after other
controls have been painted. Apparently by default it executes before. Is
there a way to change this order?
Gregory