如何在VB.NET中卸载所有打开的表单?

时间:2009-02-26 07:24:59

标签: vb.net winforms visual-studio-2008 vb6 vb6-migration

在将VB6代码转换为VB.NET的过程中,我需要替换以下代码,以关闭应用程序中剩余的所有打开的表单。

'close all sub forms
For i = My.Application.OpenForms.Count - 1 To 1 Step -1
    'UPGRADE_ISSUE: Unload Forms() was not upgraded. Click for more: 'ms-help://MS.VSCC.v90/dv_commoner/local/redirect.htm?keyword="875EBAD7-D704-4539-9969-BC7DBDAA62A2"'
    Unload(My.Application.OpenForms(i))
Next i

我已将Unload函数替换为Close(由 TFM 指示),但编译器抱怨OpenForms不是My.Application的成员{1}}。

我在哪里可以访问开放表格?

5 个答案:

答案 0 :(得分:11)

OpenForms属性返回FormCollection。您可以遍历集合来处理所有表单。

For each f as Form in My.Application.OpenForms
 f.Close()
Next

答案 1 :(得分:7)

我发现了这个解决方案,

'close all sub forms
For i = System.Windows.Forms.Application.OpenForms.Count - 1 To 1 Step -1
    Dim form As Form = System.Windows.Forms.Application.OpenForms(i)
    form.Close()
Next i

......看起来没问题(如果不是详细的话),只要我能编译其他所有东西,我就能测试它。

答案 2 :(得分:5)

Application.Exit几乎也会这样做。

我想如果所有表格都已关闭,你想要关闭申请。

答案 3 :(得分:1)

My.Application.OpenForms要求VB.Net应用程序使用应用程序框架(请参阅项目属性,应用程序,启用应用程序框架)。

如果您不使用Application Framework,则可以使用Application.OpenForms(来自System.Windows.Forms命名空间)。

答案 4 :(得分:0)

查看Application.Windows属性。