从主窗体中打开现有表单

时间:2012-05-04 12:38:26

标签: c# winforms

我设计了两种表单:Form1Form2Form1是主要形式。 Form1中有一个按钮,如果我点击该按钮,则会弹出Form2。我想在Form2上做点什么。

// click button in Form1.
private void button1_Click(object sender, EventArgs e)
    {
        Form form2= new Form();
        form2.ShowDialog();
    }

Form2是一种新形式,而不是现有形式。

这是错误的。

如何?感谢。

5 个答案:

答案 0 :(得分:5)

您正在创建Form类的实例而不是项目中的Form2。创建先前创建的Form2实例,然后在其中调用ShowDialog。

您可能已经注意到program.cs中有类似Application.Run(new Form1());这里我们创建Form1的实例并传递给Run方法。

通过创建Form2的实例并调用ShowDialog()方法来显示它

,这样做
Form2 form2= new Form2();
form2.ShowDialog();

答案 1 :(得分:0)

声明

Form2 form2= new Form2();

喜欢你的班级成员并像这样使用它:

private void button1_Click(object sender, EventArgs e)
{

        form2.ShowDialog(); //blocking call 

       //or form2.Show() //non blocking call
}

编辑

根据正确的评论,要使这项工作而不是执行导致Close()的函数的Dispose(),您需要使用form2.Hide()才能使不可见

答案 2 :(得分:0)

使用

创建空白表单
Form Form2= new Form();

你应该使用

Form2 form2= new Form2();

完整代码:

private void button1_Click(object sender, EventArgs e)
    {
        Form2 form2= new Form2();
        form2.ShowDialog();
    }

答案 3 :(得分:0)

 private void button1_Click(object sender, EventArgs e)
        {
            InputForm form1 = new InputForm();
            form1.Show();
        }

此处InputForm表示您要打开的表单。

答案 4 :(得分:0)

问题是“从主表单中打开现有表单”

好的,可以对其进行一些更改,从主窗体中打开一个现有的窗体实例。

当您显示表单

new Form2().Show();

让我们说您隐藏使用

Form2.Hide();

你们可以使用此

var Form2_instance = Application.OpenForms.OfType<Form2>().Single();
Form2_instance.Show();