试图在visual basic中关闭所有打开的表单

时间:2016-01-17 23:45:07

标签: .net vb.net winforms unhandled-exception

我想要它,所以当点击我的按钮时,我退出我的应用程序。我尝试了一个简单的for循环:

Private Sub CloseAllToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles CloseAllToolStripMenuItem.Click
    For Each Form In My.Application.OpenForms
        Form.Close()
    Next
End Sub

但在关闭表格后面的所有表格时,我收到此错误:

  

mscorlib.dll中出现未处理的“System.InvalidOperationException”类型异常   附加信息:收集已修改;枚举操作可能无法执行。

我相信这是因为我在循环可以转到下一个表单之前关闭执行代码的表单。如果是这种情况,我怎么能做到这一点,一旦最后一个表格关闭,我的循环结束?我甚至可以这样做吗?

3 个答案:

答案 0 :(得分:5)

关闭除当前表单以外的所有内容:

My.Application.OpenForms.Cast(Of Form)() _
              .Except({Me}) _
              .ToList() _
              .ForEach(Sub(form) form.Close())

正常关闭应用程序:

Application.Exit()

强制申请退出:

Environment.Exit(1)

答案 1 :(得分:0)

这很简单,只需添加验证:

        For Each Form In My.Application.OpenForms
            If Form.name <> Me.Name Then
                Form.Close()
            End If
        Next

答案 2 :(得分:0)

此操作将关闭除“ exceptthisform”或主表单以外的所有表单

def mid(ml):
    return ml[len(ml)//2] if len(ml) % 2 else ""