C# 关闭子窗体时如何防止父窗体关闭

C# 关闭子窗体时如何防止父窗体关闭,c#,windows,winforms,windows-forms-designer,C#,Windows,Winforms,Windows Forms Designer,我在Winforms中创建了两个表单。我在表格1中有按钮,在表格2中有一些文本。 当表单中的按钮被单击时,我会通过单击事件显示form2。当我关闭form2时,form1也会关闭 但我不想关闭form1 表格1代码: public Form1() { InitializeComponent(); button1.Click += Button1_Click; } private void Button1_Click(object

我在Winforms中创建了两个表单。我在表格1中有按钮,在表格2中有一些文本。 当表单中的按钮被单击时,我会通过单击事件显示form2。当我关闭form2时,form1也会关闭

但我不想关闭form1

表格1代码:

    public Form1()
    {
        InitializeComponent();
        button1.Click += Button1_Click;
    }

    private void Button1_Click(object sender, EventArgs e)
    {
        var form = new Form2();
        form.Show();
    }
表格2:

只需显示详细信息,如姓名和城市详细信息

我刚刚创建了一个简单的示例,因为我正处于起步阶段


请分享您的想法。Form1应该记住它创建的Form2。当Form2关闭时,它应该通知Form1,这样Form1就可以取消对Form2的引用

private Form2 form2 = null;

void ShowForm2(...)
{
    if (this.form2 != null) return; // form2 already shown

    this.form2 = new Form2();
    // make sure you get notified if form 2 is closed:
    this.form2.FormClosed += onFormClosed;
}

void OnFormClosed(object sender, EventArgs e)
{
     if (object.ReferenceEquals(sender, this.form2)
     {
          // form2 notifies that it has been closed
          // form2 will Dispose itself
          this.form2 = null;
     }
}
表格1和表格2的整洁结尾

注意:如果Form1正在关闭,最好询问Form2是否允许关闭(可能需要询问操作员?)。如果Form2不想关闭,请取消关闭Form1


如果允许关闭,请记住您正在关闭Form1和Form2。当Frav2通知Frim1关闭时,检查是否关闭,如果是,重新启动关闭过程,此时不会有FrO2,并且关闭可以正常继续。请考虑张贴A。它不是默认行为。通过尝试在一个干净的项目中重现问题,有两个干净的表单,您将能够找到问题。如果您自己找不到问题,则可以在此处共享。当您使用
show
显示表单时,通过关闭它,它将自动处理。请看这篇文章: