在父表单上创建新表单

时间:2014-12-23 09:51:01

标签: c# forms

我正在尝试在父窗体上创建一个窗体,这样无论父窗体在哪里,新窗体都将在同一个位置创建。我环顾四周,到目前为止发现了这个:

private void Cleaning_Click(object sender, EventArgs e)
{        
        this.Hide();
        Form2 form2 = new Form2();
        form2.Show();
        form2.Location = new Point(this.Left, this.Top);
        this.Close();
}

但我无法弄清楚如何在不关闭新创建的表单的情况下完全关闭旧的父表单。

这是我的旧代码:

private void Cleaning_Click(object sender, EventArgs e)
{        
    this.Hide();
    Cleaning c = new Cleaning();
    c.ShowDialog();
    this.Close();
}

好了现在的主要问题是this.Close关闭了两个表单,我真的需要一些建议。

感谢您的帮助。

3 个答案:

答案 0 :(得分:1)

您要关闭的表单是应用程序的主要形式,因此如果您关闭它,其他所有表单都将关闭它

static class Program
{
    /// <summary>
    /// The main entry point for the application.
    /// </summary>
    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Form1 form1 = new Form1(); 
        Form1 form2 = new Form2(); 
        Application.Run(form1);
       // It will run form1 until it close then run the form2 
        Application.Run(form2);
    }
}

}

答案 1 :(得分:0)

请试试这个:

private void Cleaning_Click(object sender, EventArgs e)
{        
        this.Hide();
        Form2 form2 = new Form2();
        form2.Show();
        form2.Location = new Point(this.Location.X, this.Location.Y);
        this.Close();
}

更改新表单的属性:StartPosition =&gt;手册

希望这有帮助!

答案 2 :(得分:0)

使用Hide属性隐藏子表单Show之后的父表单。

Application.Exit()添加到子表单的关闭按钮。 (如果您想退出子表单)

请勿在父表单中添加this.Close()

PS:告诉我,如果我错过了什么。