我有一个2 forms的应用程序,主窗口和第二个Form。
我想要的是在一个Form上打开第二个button click,它的位置必须就在主表单旁边(所以如果主表单是600px wide,那么新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不是正确的属性吗?
发布于 2013-01-12 17:54:29
将表单的StartPosition设置为FormStartPosition.Manual。您可以在设计器中或从构造函数中这样做:
StartPosition = FormStartPosition.Manual;发布于 2013-01-12 18:38:03
显然,您不依赖于StartPosition属性。然而,将其更改为手动并不是正确的修复方法,您加载的第二种形式很可能会在另一台具有不同视频DPI设置的机器上重新出现。这几天很普遍。这反过来可以改变它的位置属性。
正确的方法是等待Load事件启动,然后重新调整标度,此时窗口还不可见。这是把它移到正确的地方的最佳时机。StartPosition现在已经不再重要了。如下所示:
var frm = new SecondForm();
frm.Load += delegate {
frm.Location = new Point(this.Right, this.Top);
};
frm.Show();发布于 2013-01-12 17:54:45
Location是right属性,但必须设置
Form.StartPosition = FormStartPosition.Manual;也是。
https://stackoverflow.com/questions/14296137
复制相似问题