Code Bye

你们也是这样的吗

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();

5

这个完全可以在属性里面手动设置啊

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明你们也是这样的吗