Dot-Net

試圖在 Visual Basic 中關閉所有打開的表單

  • December 29, 2020

我想要它,所以當我的按鈕被點擊時,我退出我的應用程序。我嘗試了一個簡單的 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”類型的未處理異常附加資訊:集合已修改;列舉操作可能無法執行。

我相信這是因為我在循環進入下一個表單之前關閉了執行程式碼的表單。如果是這種情況,我怎樣才能讓它在最後一個表單關閉後完成我的循環?我什至可以這樣做嗎?

關閉除目前表格之外的所有表格:

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

正常關閉應用程序:

Application.Exit()

強制應用退出:

Environment.Exit(1)

這很簡單,只需添加一個驗證:

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

引用自:https://stackoverflow.com/questions/34845202