好吧,我有一个打开的表格:
ShowDialog(this);
Run Code Online (Sandbox Code Playgroud)
我尝试使用其Location属性来更改表单的位置,但我不知道该位置相对于什么确切?我想在某个按钮下面打开此表单。那怎么办呢?
谢谢。
窗体将期望相对于屏幕左上角的坐标。但是,控件在窗体内的位置是相对于窗体†的左上角。
使用控件的Location属性找到其位置,然后调用PointToScreenForm对象将其转换为屏幕坐标。然后,您可以相对于此放置新表格。
例如:
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();
}
Run Code Online (Sandbox Code Playgroud)
† 实际上是表单客户区的左上角。
我更喜欢这个:
myModalForm.Location = New Point(myControl.PointToScreen(Point.Empty).X + myControl.Width, myControl.PointToScreen(Point.Empty).Y)
Run Code Online (Sandbox Code Playgroud)