C#获取控件在表单上的位置
当控件可能位于其他控件(如面板)中时,是否有任何方法可以检索控件在窗体中的位置?
控件的Left和Top属性只给出了它在父控件中的位置,但如果我的控件位于五个嵌套面板内,并且我需要它在表单上的位置,该怎么办?
快速示例:
按钮btnA位于面板pnlB内的坐标(10,10)上。
面板pnlB位于形式frmC内的坐标(15,15)上。
我想要btnA在frmC上的位置,这是(25,25)。
我可以得到这个位置吗?
我通常结合使用PointToScreen
和PointToClient
:
Point locationOnForm = control.FindForm().PointToClient(
control.Parent.PointToScreen(control.Location));
您可以使用控件PointToScreen
方法获取相对于屏幕的绝对位置。
您可以使用Forms PointToScreen
方法,并使用基础数学来获取控件的位置。
你可以走过父母,注意他们在父母的位置,直到你到达表格。
编辑:类似(未经测试):
public Point GetPositionInForm(Control ctrl)
{
Point p = ctrl.Location;
Control parent = ctrl.Parent;
while (! (parent is Form))
{
p.Offset(parent.Location.X, parent.Location.Y);
parent = parent.Parent;
}
return p;
}
链接地址: http://www.djcxy.com/p/58365.html
上一篇: C# Get a control's position on a form
下一篇: How do I determine which monitor my .NET Windows Forms program is running on?