Winforms位置
我有一个带有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;
显然你没有指望StartPosition属性。 但是,将其更改为手动不是正确的修复,您加载的第二种forms可能会在具有不同videoDPI设置的另一台机器上重新调整自身。 这些天很常见。 这又可以改变其Location属性。
正确的方法是等待Load事件触发,然后重新缩放,窗口仍然不可见。 哪个是在正确的地方移动它的最佳时间。 StartPosition现在不再重要。 像这样:
var frm = new SecondForm(); frm.Load += delegate { frm.Location = new Point(this.Right, this.Top); }; frm.Show();
Location
是正确的财产,但你必须设置
Form.StartPosition = FormStartPosition.Manual;
太。