我编写了一个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
答案 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()?
通过这种方式,您仍然可以在不可见的情况下访问其他表单。
我希望这会有所帮助。