C# 如何在父窗口(打开器)中相对于控件的位置显示模式窗体
嗯,我有一个表格,我打开时使用:C# 如何在父窗口(打开器)中相对于控件的位置显示模式窗体,c#,winforms,C#,Winforms,嗯,我有一个表格,我打开时使用: ShowDialog(this); 我试图使用表单的Location属性来更改表单的位置,但我不明白这个位置到底是相对于什么的?我想在某个按钮下方打开此表单。那么如何做到这一点呢 谢谢。表单需要相对于屏幕左上角的坐标。但是,控件在窗体中的位置相对于窗体†的左上角 使用控件的Location属性查找其位置,然后在表单对象上调用PointToScreen,将其转换为屏幕坐标。然后,您可以将新表单相对于该表单进行定位 例如: var locationInForm =
ShowDialog(this);
我试图使用表单的Location
属性来更改表单的位置,但我不明白这个位置到底是相对于什么的?我想在某个按钮下方打开此表单。那么如何做到这一点呢
谢谢。表单需要相对于屏幕左上角的坐标。但是,控件在窗体中的位置相对于窗体†的左上角 使用控件的
Location
属性查找其位置,然后在表单对象上调用PointToScreen
,将其转换为屏幕坐标。然后,您可以将新表单相对于该表单进行定位
例如:
var locationInForm = myControl.Location;
var locationOnScreen = mainForm.PointToScreen(locationInForm);
using (var model = new ModelForm())
{
model.Location = new Point(locationOnScreen.X, locationOnScreen.Y + myControl.Height + 3);
model.ShowDialog();
}
†实际上是表单客户区的左上角。我更喜欢这样:
myModalForm.Location = New Point(myControl.PointToScreen(Point.Empty).X + myControl.Width, myControl.PointToScreen(Point.Empty).Y)
设置表单位置的代码不正确。它应该是:
model.Location=新点(locationOnScreen.X,locationOnScreen.Y+myControl.Height+3)代码>作为注释。。。modalForm.startingPosition必须是“手动”的,以考虑位置