Form frm = new From(); frm.Location = new Point(10,10); frm.Size = new Size(100,100); frm.Show();
上面的代码 居然只有Size生效了 location 还是按照windows的默认位置出来
原本本人是Location是写在构造器里面的 大致代码就像下面
public partial class Form2 : Form
{
public Form2() {
InitializeComponent();
//其他代码
this.Location = new Point(10, 10);
}
private void Form2_Load(object sender, EventArgs e) {
MessageBox.Show(this.Location.ToString());
//其他代码
}
}
//====调用的地方
Form frm = new Form2();
MessageBox.Show(frm.Location.ToString());
//ShowWindow(frm.Handle, 5);
//frm.Visible = true;
frm.Show();
两次弹出来的对话框坐标不一样 实在是想不出有什么地方对 location 进行了设置 唯一不知道的代码就是在Show里面了 Show里面是在对 this.Visable 进行设置 而 this.Visable 的 set {} 里面是调用的win32api 层次并没有跟太深
本人记得以前都不是这样的啊 还是说本人以前就记错了?
目前把 frm.Location = xx 放到 frm.Show 后面就正常 或在 From_Load 中去设置 就没有问题
解决方案
25
把form的startposition改为manual,默认是windows默认位置的
10
Form frm = new Form();
frm.StartPosition = FormStartPosition.Manual;
frm.Location = new Point(10, 10);
frm.Size = new Size(100, 100);
frm.Show();
frm.StartPosition = FormStartPosition.Manual;
frm.Location = new Point(10, 10);
frm.Size = new Size(100, 100);
frm.Show();
5
这个完全可以在属性里面手动设置啊