Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

C# Get a control's position on a form

Is there any way to retrieve a control's position in a form, when the control may be inside other controls (like Panels)?

The control's Left and Top properties gives me only it's position within it's parent control, but what if my control is inside five nested panels, and I need it's position on the form?

Quick example:

The button btnA is located on coordinates (10,10) inside the panel pnlB.
The panel pnlB is located on coordinates (15,15) inside the form frmC.

I want btnA's location on frmC, which is (25,25).

Can I get this location?

like image 775
Erlend D. Avatar asked Sep 25 '09 15:09

Erlend D.


1 Answers

I usually combine PointToScreen and PointToClient:

Point locationOnForm = control.FindForm().PointToClient(     control.Parent.PointToScreen(control.Location)); 
like image 180
Fredrik Mörk Avatar answered Sep 17 '22 13:09

Fredrik Mörk