6

我有两种形式。我需要用一个按钮打开第二个表单。当我打开 form2 时,我隐藏了 form1。但是,当我尝试使用按钮从 form2 再次显示 form1 时,它不起作用。我的form1代码是:

Form2 form2 = new Form2();        
form2.ShowDialog();

内部form2代码:

Form1.ActiveForm.ShowDialog();

或者

Form1.ActiveForm.Show();

或者

form1.show(); (form1 doesn't exist in the current context)

不起作用。我不想打开新表单

Form1 form1 = new Form1();   
form1.ShowDialog();

我想显示我之前隐藏的表格。或者我可以将其最小化到任务栏

this.WindowState = FormWindowState.Minimized;

并再次从 form2 最大化它。

Form2.ActiveForm.WindowState = FormWindowState.Maximized;

但是我尝试的方式再次不起作用。这些方法有什么问题?

4

4 回答 4

8

您可以尝试(在 Form1 按钮上单击)

Hide();
Form2 form2 = new Form2();        
form2.ShowDialog();
form2 = null;
Show();

或(它应该工作)

Hide();
using (Form2 form2 = new Form2())       
    form2.ShowDialog();
Show();
于 2012-11-05T13:51:52.227 回答
2

保留 of 的实例Form1并将其用于Showor Hide

于 2012-11-05T13:53:14.017 回答
1

如果您像这样显示 form2,则可以通过 Owner 属性从 Form2 访问 Form1:

form2.ShowDialog( form1 )

或像这样:

 form2.Show( form1 )

请注意,这样您不会被迫使用 ShowDialog,因为可以在 Form2 中移动隐藏和显示逻辑

于 2014-07-24T12:08:24.523 回答
1

这种方法是我觉得最适合我的方法

初级形式

Form2 form2 = new Form2(this);

次要形式

private Form Form1
public Form2(Form Form1)
{
    InitializeComponent();
    this.Form1 = Form1;
    Form1.Hide();
}

稍后关闭时

private void btnClose_Click(object sender, EventArgs e)
{
    Form1.Show();
    this.Close();
}
于 2017-05-09T20:49:09.367 回答