【发布时间】:2014-07-21 12:13:42
【问题描述】:
-
下面是我写的代码
Private Sub CloseTransactionForms() Dim ActiveFroms As New List(Of String) Dim formToClose As New List(Of Form) Dim j As Integer ActiveFroms.Add("FrmSale") ActiveFroms.Add("FrmpPurchase") ActiveFroms.Add("FrmSaleReturn") ActiveFroms.Add("FrmPurchaseReturn") Try For Each frm As Form In My.Application.OpenForms For j = 0 To ActiveFroms.Count - 1 If frm.Name.ToString() = ActiveFroms.Item(j) Then formToClose.Add(frm) End If Next Next If formToClose.Count > 0 Then Dim i As Integer For i = 0 To formToClose.Count - 1 Dim xform As Form = formToClose.Item(i) xform.Close() Next End If Catch ex As Exception End Try End Sub 此代码将遍历我的应用程序中打开的表单并关闭应用程序中的定义的表单
1234563
注意:我已经看过this question in SO
【问题讨论】:
-
这看起来像您链接的问题的副本,并且还不清楚您在问什么。为什么代码看起来“不适合你”?您也许可以使用 LINQ (IEnumerable.Any) 更优雅地过滤表单,但这与关闭表单没有太大关系。
-
duplicate > 不是因为在我的情况下,我只需要关闭
openfoms的 4 个表格 .... 对你不利 > 因为你可以看到我在该代码中使用了 3for loop -
您修改了正在迭代的集合。结果总是很糟糕。您必须将其从 Count-1 向后迭代到 0 以避免发生意外。
-
@Hans:他实际上是在创建一个单独的表单列表来关闭。
-
好吧,不知道“vlose”应该是什么意思:)
标签: c# vb.net winforms openform