Winforms Location
本文关键字:Location Winforms | 更新日期: 2023-09-27 17:52:11
我有一个应用程序与2 forms
,主窗口和第二个Form
。
我想要的是在button click
上打开第二个Form
,它的位置必须在主形式的右边(所以如果主形式是600px
宽,新的Form
的X
将是main.X + 600
)
我试过了,但它似乎不接受,它仍然在主表单的顶部打开:
private void button1_Click(object sender, EventArgs e)
{
var form = new SecondForm();
var main = this.Location;
form.Location = new Point((main.X + 600), main.Y);
form.Show();
}
是Location
不是正确的属性?
设置表单的StartPosition
为FormStartPosition.Manual
。您可以在设计器或构造器中执行此操作:
StartPosition = FormStartPosition.Manual;
Location
为右属性,但必须设置
Form.StartPosition = FormStartPosition.Manual;
。
显然你没有考虑StartPosition属性。然而,将其更改为手动并不是正确的解决方案,您加载的第二种形式可能会在另一台具有不同视频DPI设置的机器上重新缩放。现在很常见。这反过来又可以改变它的Location属性。
正确的方法是等待Load事件触发,然后重新缩放完成,窗口还不可见。这是把它移到正确位置的最佳时间。StartPosition现在不再重要了。这样的:
var frm = new SecondForm();
frm.Load += delegate {
frm.Location = new Point(this.Right, this.Top);
};
frm.Show();