关闭窗口时切换到另一个窗口,反之亦然

时间:2015-08-31 11:35:09

标签: vb.net winforms formclosing

我编写了一个Window应用程序,它有两个不同的父窗体(form1和form2)。每个表单都有几个子表单。我登录后打开form1。现在我在form1上有一个按钮(称为切换到form2),它切换到form2。现在我需要在打开form2后关闭form1。我需要从form2到form1同样的事情。

处理此问题的最佳方法是什么。

我通过在每个表单的表单加载下将此代码添加到关闭表单来尝试类似下面的内容,但是我得到以下异常。

 A first chance exception of type 'System.InvalidOperationException' occurred in mscorlib.dll

Additional information: Collection was modified; enumeration operation may not execute.

你能建议我处理这个问题吗?

表单1

Private Sub Form1_Load(sender As Object, e As System.EventArgs) Handles Me.Load
 For Each frm As Form In Application.OpenForms
   If frm.Name.ToLower = "form2" Then
      frm.Close()
   End If
 Next
End Sub

表格2

Private Sub Form2_Load(sender As Object, e As System.EventArgs) Handles Me.Load
 For Each frm As Form In Application.OpenForms
   If frm.Name.ToLower = "form1" Then
      frm.Close()
   End If
 Next
End Sub

2 个答案:

答案 0 :(得分:1)

我认为你有责任创建表格 如果是这样,我会重载每个表单的构造函数,以获取另一个表单类型的参数并将其关闭。
对于Form1,它将是:

Public Sub New(form2 As Form2)
  InitializeComponent()
  'and the rest of your initialization code

  If form2 IsNot Nothing Then
    form2.Close()
  End If
End Sub

Form2的构造函数反之亦然。

它甚至不必像上面那样专业。您总是可以将其概括为将Form类型的对象作为参数。

答案 1 :(得分:0)

为什么不使用Form1.Hide()?

通过这种方式,您仍然可以在不可见的情况下访问其他表单。

我希望这会有所帮助。