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
这个完全可以在属性里面手动设置啊