winforms 如何在隐藏窗体后再次显示它?

xu3bshqb  于 2022-11-30  发布在  其他
关注(0)|答案(5)|浏览(213)

我有两个窗体。我需要打开第二个带有按钮的窗体。当我打开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;

然而我尝试的方法又不起作用。这些方法有什么问题?

i7uaboj4

i7uaboj41#

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

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

或者(应该可以)

Hide();
using (Form2 form2 = new Form2())       
    form2.ShowDialog();
Show();
mznpcxlj

mznpcxlj2#

保留Form1的执行严修,并将其用于ShowHide

a64a0gku

a64a0gku3#

如果按如下方式显示Form2,则可以通过Owner属性从Form2访问Form1:

form2.ShowDialog( form1 )

或类似于:

form2.Show( form1 )

请注意,这种方式不会强制您使用ShowDialog,因为隐藏和显示逻辑可以在Form2中移动

6qqygrtg

6qqygrtg4#

我发现这种方法最适合我
主表单

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();
}
sg3maiej

sg3maiej5#

FormCollection frm = Application.OpenForms;

        foreach(Form f in frm)
        {
            if(f.Name=="yourformname")
            {
                f.Show();
                this.Close();                    
                this.Dispose();
                return;
            }
        }

相关问题