打开一个新表单,关闭旧表单C#

时间:2011-12-10 16:15:55

标签: c# forms new-operator

我是C#的新手,我正在尝试用各种函数制作一个程序来自学,如何使用C#。如果我不知道什么,我通常会看到互联网,但这让我疯狂。

我记得在一开始我开始这个我想要打开一个表格并关闭旧表格,但是当我关闭新表格时,旧表格会再次出现,以及其他奇怪的问题。 this.Hide()似乎也没有做任何事情。

目前我正在使用这个代码打开一个新表单,但感觉应该有一行代码,只需要打开一个表单就可以了。 我的问题是,如果有。

    private void OpenMainForm()
    {
        MainForm frm2 = new MainForm();
        frm2.FormClosed += new FormClosedEventHandler(frm2_FormClosed);
        frm2.Show();

        // Since this.Hide() for some reason doesn't work, i'll have to do this crap
        this.WindowState = FormWindowState.Minimized;
        this.ShowInTaskbar = false;
    }

    private void frm2_FormClosed(object sender, FormClosedEventArgs e)
    {
        this.Close();
    }

4 个答案:

答案 0 :(得分:14)

如果您想要在辅助窗口中隐藏主窗口,则应使用ShowDialog()方法。有了它,你甚至不需要form_closed event

您的代码应如下所示:

private void OpenMainForm()
{
    MainForm frm2 = new MainForm();
    this.Hide();           //Hide the main form before showing the secondary
    frm2.ShowDialog();     //Show secondary form, code execution stop until frm2 is closed
    this.Show();           //When frm2 is closed, continue with the code (show main form)
}

答案 1 :(得分:4)

您也可以使用此代码:

public static void ThreadProc()
{
    Form2 f; 
    Application.Run(new Form2());
}

private void button1_Click(object sender, EventArgs e)
{
    System.Threading.Thread t = new System.Threading.Thread(new System.Threading.ThreadStart(ThreadProc));
    t.Start();
    this.Close();
 }

答案 2 :(得分:2)

这对我来说很完美

Form2 frm = new Form2();
frm.Show();
frm.Activate();
this.Hide();

但是如果你想从Form2关闭整个应用程序......你必须在Form2的Application.Exit();事件中添加FormClosing

答案 3 :(得分:0)

您可以隐藏旧表单,如下所示。

private void frm2_FormClosed(object sender, FormClosedEventArgs e)
{
    this.Hide();
}