+1  A: 

Override the OnPaint method on the Form, and use the DrawImage() method on the object from the PainteEventArgs.Graphics property to draw a bitmap of an arrow.

Mark Cidade
This begs the question: *which* graphics object? The arrow is likely to visually span several controls. I believe that was at the heart of this question.
Konrad Rudolph
Does that comment apply to the latest revision (501829) of my answer?
Mark Cidade
Hi Marxi , i will try this out .Thank you so much.
Anna
The problem here could be that the paint area occupied by textboxes and buttons might not be drawable in the paint handler(clipped children)/or will be erased/repainted by those children.
liggett78
It might be necessary to subclass the textbox control.
Mark Cidade
+1  A: 

You could create a custom form with a transparent background, paint your arrow on it using GDI+ (using marxidad's technique above, or by just dropping a PictureBox on it and handling the Paint event).

Then just instantiate a new instance of the arrow form over the top of your existing "parent" form (you might want to set TopMost to true) and start a Timer to fade it out.

The only thing to be careful of there is...

  • cleaning up properly if you prematurely close the "parent" form, and...
  • passing through any click events to the "parent" form.
moobaa
+1  A: 

There is a really nice library called Locus Effects here. Go check it out, it does exactly what you want it to do.

spinner_den