使用 startposition 属性,可以设置屏幕中间,也可以设置相对父窗体的中间,或者自定义。
使用Owner可以设置窗体的子窗体
父体如果是用不规则窗体定义的可以用startposition不
@莫问: 当然可以,所谓不规则窗体其实就是一个矩形窗体,然后让不现实的地方透明,其边框还是矩形,只不过你如果觉得子窗体的位置不是不规则窗体的中间,就不用center,改用自定义位置
@WuRang: 自定义代码怎么写?
@莫问:在窗体的构造函数中
this.StartPosition = FormStartPosition.Manual; this.Location = new Point(***,***);
@WuRang: 这是在子窗体写?
@莫问: 你要定子窗体的位置就在子窗体中写,这个位置是相对屏幕的位置,如果你要相对于父窗体,那就先给父窗体设置子窗体,在子窗体的构造函数中写 this.Owner = 父窗体。 然后你就可以获取到父窗体Location。 如 this.Owner.Location.X,this.Owner.Location.Y 。最后this.Location = new Point( this.Owner.Location.X + 相对X ,this.Owner.Location.Y + 相对Y);
代码: 子窗体的构造函数中
//父窗体f this.Owner = f; this.StartPosition = FormStartPosition.Manual; this.Location = new Point( this.Owner.Location.X + 相对x, this.Owner.Location.Y + 相对Y);
@WuRang: 我怎么写的不成啊...我按一下按钮,出来一下,我把子窗体关了,移动父窗体,然后再按下按钮,子窗体还在原来位置啊....
@莫问:
public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { Form2 f2 = new Form2(this); f2.Show(); } }
public partial class Form2 : Form { public Form2() { InitializeComponent(); } public Form2(Form f) { this.Owner = f; this.StartPosition = FormStartPosition.Manual; this.Location = new Point(this.Owner.Location.X + 10, this.Owner.Location.Y + 10); } }
@WuRang: 怎么调用了不是我想要的对话框
@WuRang: 我把this取消 就出现了我想要的窗口,不过我的位置不对了,我加上this,位置对了,但对话框不是我想要的