C# 双击打开一个新的winform并关闭调用者窗口

C# 双击打开一个新的winform并关闭调用者窗口,c#,winforms,C#,Winforms,我有一个叫做Form1的C#winform,这个winform有一个列表和一个按钮。 我在按钮中添加了一个click()事件,在列表中添加了一个doubleclick()事件。 两个事件都调用相同的方法:(在form1.designer.cs中) 在myMethod中,我要执行以下操作: 打开类型为Form2的新winform,并使其成为活动winform 关闭调用方winform(类似于Form1),不再需要此表单 我是这样做的:(在form1.cs中) 当列表双击事件调用myMethod时,

我有一个叫做
Form1
的C#winform,这个winform有一个列表和一个按钮。 我在按钮中添加了一个
click()
事件,在列表中添加了一个
doubleclick()
事件。 两个事件都调用相同的方法:(在form1.designer.cs中)

myMethod
中,我要执行以下操作:

  • 打开类型为
    Form2
    的新winform,并使其成为活动winform

  • 关闭调用方winform(类似于
    Form1
    ),不再需要此表单

  • 我是这样做的:(在form1.cs中)

    当列表双击事件调用
    myMethod
    时,当
    myMethod
    结束时,存在空指针异常。 当按钮单击事件调用它时,它工作正常

    我也尝试了
    this.close()
    ,得到了相同的行为

    我的问题是:

  • 我应该如何正确地编写
    myMethod
    ,以便它对按钮单击事件和列表双击事件执行所需的操作

  • 按钮和列表之间有什么区别?为什么按钮可以正常工作,但列表会崩溃


  • 谢谢

    您可以隐藏
    表单1
    并显示
    表单2
    。这将引发一些问题,如关闭
    Form2
    不会关闭
    表单1

    this.Hide();
    var form2 = new Form2();
    form2.ShowDialog();
    

    您可以隐藏
    Form1
    并显示
    Form2
    。这将引发一些问题,如关闭
    Form2
    不会关闭
    表单1

    this.Hide();
    var form2 = new Form2();
    form2.ShowDialog();
    

    调用窗体是否实际关闭?应该调用form.Close方法,而不是Dispose。我试过了。也很接近,同样的问题。neoistheone,form1实际上已经接近了。在我看来,这可能就是例外的原因。但是我不明白点击按钮是如何工作的。这是真正的代码吗?是否在其他地方引用了Form1的实例?调用窗体是否实际关闭?您应该调用form.Close方法,而不是Dispose方法。我试过了。也很接近,同样的问题。neoistheone,form1实际上已经接近了。在我看来,这可能就是例外的原因。但是我不明白点击按钮是如何工作的。这是真正的代码吗?是否在其他地方引用了Form1的实例?
    this.Hide();
    var form2 = new Form2();
    form2.ShowDialog();