【发布时间】:2015-08-31 11:35:08
【问题描述】:
我编写了一个窗口应用程序,它有两个不同的父窗体(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
【问题讨论】:
-
你得到了什么异常?
-
哦,不应该是
frm.Name.ToLower()(注意括号)吗?我可能错了,我真的不熟悉vb语法。 -
在 mscorlib.dll 中出现“System.InvalidOperationException”类型的第一次机会异常附加信息:集合已修改;枚举操作可能无法执行。
-
使用您问题下方的小编辑链接将此例外编辑到您的问题中 - 这是解决您问题的一些有价值的信息!
-
正如错误所说,在枚举集合时不能更改集合。当您关闭表单时,
OpenForms集合会更改
标签: vb.net winforms formclosing