【问题标题】:Closing multiple new form [VB.NET]关闭多个新表单 [VB.NET]
【发布时间】:2015-09-14 07:38:20
【问题描述】:

我的 sw 有问题:我有三种形式:主要形式 (A)、次要形式 (B) 和第三种形式 (C)。表格 A 必须始终可见且可用,表格 B 从表格 A 打开,表格 C 从表格 B 打开。 我需要打开表单 C 的多个实例(我不知道有多少实例),我在表单 B 的命令按钮中使用此代码:

            Dim newform As New modifica_normale
            newform.LoadOrders(commessa_da_modificare, id_da_modificare, False)
            newform.Show()

当表单 B 关闭时,我需要关闭表单 C 的所有多个实例,因此在关闭事件中我尝试放置:

            modifica_normale.Close()

但不工作。 我知道我可以将 newform 定义为全局变量并调用 newform.close(),但我不知道用户将打开多少个 newform。

谢谢,彼得罗。

【问题讨论】:

    标签: vb.net


    【解决方案1】:

    这段代码只会关闭表单的公共实例,而不是每个新实例化的表单对象:

     modifica_normale.Close()
    

    相反,您可以尝试在创建每个表单时将表单添加到表单集合中。 在表单 B 上创建表单级列表。

     Dim currentForms As List(Of Form) = New List(Of Form)
    

    每次创建表单 C 的实例时添加它

    Dim fNew As New modifica_normale
    currentForms.Add(fNew)
    

    当你想关闭它们时,循环返回关闭每个实例的表单集合。

    For Each frmCheck As Form In currentForms
        frmCheck.Close
    Next
    

    【讨论】:

    • 解释一下为什么 OP 的代码不起作用会很好
    • (我不知道如何在评论中添加代码)它可以工作,但是当第一个表单关闭时,每个表单都会返回一个错误:“集合已更改”。我通过这种糟糕的方式解决了这个问题:之前:对于每个frmCheck As Form In Application.OpenForms If frmCheck.Name = form_name Then frmCheck.Close() GoTo before End If Next
    • 谢谢!我不知道列表方法。我可以将它用于许多其他情况。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多