在同一屏幕位置创建新表单

Create new form on same screen position

我想在同一位置创建一个新表单。当我调用此代码时,会打开一个新表单,但在不同的屏幕位置。

private void BtnAddForm_Click(object sender, EventArgs e)
{
     Form2 form2 = new Form2();
     form2.Tag = this;
     form2.Location = this.Location;
     form2.Show(this);
     Hide();
}

我使用 this.Location 从我的第一个表单中获取位置,但这没有任何效果。

最简单的方法是使用 StartPosition 属性 的形式。此 属性 应在显示表单之前设置。您可以在调用 Show 或 ShowDialog 方法之前或在窗体的构造函数中设置此 属性。

例如: form2.StartPosition = FormStartPosition.CenterParent

用这个。希望有所帮助

    private void BtnAddForm_Click(object sender, EventArgs e)
    {
        Form2 form2 = new Form2();
        form2.Show(this);
        form2.Tag = this;
        form2.Location = this.Location;
        Hide();
    }

您需要将 StartPosition 属性 设置为 Manual 才能正常工作。

private void BtnAddForm_Click(object sender, EventArgs e)
{
    Form2 form2 = new Form2();
    form2.Tag = this;
    form2.StartPosition = FormStartPosition.Manual;         
    form2.Location = this.Location;
    form2.Show(this);
    Hide();
}

使用form2.StartPosition = FormStartPosition.Manual;,您还应该使用form2.Closed += (s, args) => this.Close();在隐藏后关闭父表单试试这个:

Hide();
Form2 form2 = new Form2();
form2.Tag = this;
form2.StartPosition = FormStartPosition.Manual;
form2.Location = this.Location;
form2.Closed += (s, args) => this.Close();
form2.Show();
private void button5_Click(object sender, EventArgs e)
{
    Form1 NewForm = new Form1();
    NewForm.Show();
    NewForm.Location = this.Location;
    this.Dispose(false);
}

This is a pretty simple one.