如何让 VB.Net 按标记值关闭一组表单

  • 本文关键字:表单 一组 VB Net vb.net forms
  • 更新时间 :
  • 英文 :


我正在通过单击按钮1来创建并显示一组表单。然后,我需要单击按钮2以关闭所有这些表单。

按事件button1_Click:

Dim frm As New myfrm()
frm.Tag = "temptag"
frm.TopLevel = False
controls.add(frm)

按事件button2_Click:

关闭任何tag = "temptag"的表单

如何创建能够实现这一目标的代码?

以下代码将在不使用标记的情况下执行您想要的操作:

Public Class Form1
    Private ChildNumber As Integer = 0
    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        Dim frm As New Form1
        ChildNumber += 1
        frm.Text = "Child Form " & ChildNumber
        frm.Show()
        frm.TopLevel = False
        Me.Controls.Add(frm)
        frm.Tag = "temptag"
    End Sub
    Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
        Dim count As Integer = Me.Controls.Count
        For i As Integer = Me.Controls.Count - 1 to 0 Step -1
            Dim ctrl As Control
            ctrl = Me.Controls(i)
            If ctrl.Tag = "temptag" Then
                DirectCast(ctrl, Form1).Dispose()
            End If
        Next
    End Sub
End Class

添加以下内容:

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    For x As Integer = Me.Controls.Count - 1 To 0 Step -1
        Dim Ctrl As Control = Me.Controls(x)
        Try
            If Ctrl.Tag = "temptag" Then
                Ctrl.Dispose()
            End If
        Catch ex As Exception
        End Try
    Next
End Sub

编辑:

更新了 for 循环以向后执行控件集合(因此不会缺少任何控件 - 谢谢@Tarik),并根据 Passant 对 Tarik 的建议将.Close更改为.Dispose@Hans

最新更新