使用按钮/事件显示新表单并隐藏C#中的现有表单

时间:2011-06-15 21:35:07

标签: c# .net windows

我试图单击表单中的按钮,这样做会隐藏现有表单并显示新表单,虽然我遇到了问题,并且表单在不同位置“生成”时出现问题屏幕!

我的代码如下:

private void button1_Click(object sender, EventArgs e)
{
    (new Form3()).Show();
    (new Form2()).Hide();
}

此代码显示新表单ok,但form2不隐藏

7 个答案:

答案 0 :(得分:3)

您正在创建一个Form2的新实例并隐藏它。我猜你正在寻找这个:

private void button1_Click(object sender, EventArgs e)
{
    (new Form3()).Show();
    this.Hide();
}

答案 1 :(得分:2)

如果要隐藏某个表单,则需要在其正确的实例上调用.Hide()方法。因此,例如,当您创建表单时,您可以将其存储到某个变量:

Form2 form2 = new Form2();

以后要隐藏此表单时:

form2.Hide();

答案 2 :(得分:1)

您正在隐藏新表单。你应该做的是保持对你打开的表格的引用,然后隐藏它:

private void button1_Click(object sender, EventArgs e)
{
    form3.Show();
    form2.Hide();
}
private Form2 form2 = new Form2();
private Form3 form3 = new Form3();

答案 3 :(得分:1)

代码(new Form2()).Hide();实例化Form2的新实例。为了隐藏现有表单,您需要引用它。

答案 4 :(得分:0)

您无法创建Form2的新实例,并希望隐藏现有的Form2。将现有Form2存储到类的实例变量中,并在该实例上调用Hide()。

答案 5 :(得分:0)

如果您尝试隐藏现有表单,(new Form2()).Hide()将不会执行此操作,因为这将从Form2类中实例化一个新表单。

假设Button1位于您要隐藏的表单上,您需要:

private void button1_Click(object sender, EventArgs e)
{
    (new Form3()).Show();
    this.Hide();
}

如果它不在同一表单上,您需要引用要隐藏的表单:

private Form2 form2 = new Form2();
private Form3 form3 = new Form3();
form2.Show();

private void button1_Click(object sender, EventArgs e)
{
   form2.Hide();
   form3.Show();
}

答案 6 :(得分:0)

@BBree是一个很好的答案。只是为了咧嘴笑,在Form1_Load进行初始实例化和Show()之后,Form1的一些代码有两个按钮,用于切换另外两个子表单Form2和Form3。

Form2 f2 = null;
Form3 f3 = null;

private void Form1_Load(object sender, EventArgs e)
{
    f2 = new Form2();
    f2.Show();

    f3 = new Form3();
    f3.Show();
}

private void button1_Click(object sender, EventArgs e)
{
    if (f2.Visible)
    {
        f2.Hide();
    }
    else
    {
        f2.Show();
    }
}

private void button2_Click(object sender, EventArgs e)
{
    if (f3.Visible)
    {
        f3.Hide();
    }
    else
    {
        f3.Show();
    }
}