我设计了两种表单:Form1
和Form2
。 Form1
是主要形式。 Form1
中有一个按钮,如果我点击该按钮,则会弹出Form2
。我想在Form2
上做点什么。
// click button in Form1.
private void button1_Click(object sender, EventArgs e)
{
Form form2= new Form();
form2.ShowDialog();
}
但Form2
是一种新形式,而不是现有形式。
这是错误的。
如何?感谢。
答案 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();