如何使用VB.NET最小化我的应用程序中的所有活动表单?

时间:2011-02-23 04:35:43

标签: .net vb.net winforms minimize

如何通过单击按钮来最小化应用程序中的所有活动表单?

我一次可以看到多个表单,当我单击其中一个表单上的单个按钮时,我希望所有活动表单都能最小化。

我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:7)

如果您没有尝试最小化MDI子窗口,您可以简单地遍历应用程序中的所有打开表单,并将WindowState property设置为“最小化”。 VB.NET为你的OpenForms类提供了一个Application集合,使这个简单易懂。

将以下示例代码放入按钮控件的Click事件处理程序或类似方法中:

For Each frm As Form in Application.OpenForms
    frm.WindowState = FormWindowState.Minimized
Next frm


如果要在用户单击单个表单标题栏上的 system 最小化框时最小化所有表单,则需要监听该事件,并执行上述代码。通过覆盖要将其最小化事件应用于所有打开表单的每个表单的OnSizeChanged方法来执行此操作。

通过单击其任务栏图标,只要还原其中一个表单,您也可以使所有表单恢复到正常状态。只需反转用于最小化窗口的相同过程,指定“正常”窗口状态而不是“最小化”。

例如,您可以编写以下代码:

Protected Overrides Sub OnSizeChanged(ByVal e As System.EventArgs)
    ' Call the base class first
    MyBase.OnSizeChanged(e)

    ' See if this form was just minimized
    If Me.WindowState = FormWindowState.Minimized Then
        ' Minimize all open forms
        For Each frm As Form In Application.OpenForms
            frm.WindowState = FormWindowState.Minimized
        Next frm
    ElseIf Me.WindowState = FormWindowState.Normal Then
        ' Restore all open forms
        For Each frm As Form In Application.OpenForms
            frm.WindowState = FormWindowState.Normal
        Next frm
    End If
End Sub

答案 1 :(得分:3)

您可以像这样迭代Application.Forms集合。

For Each form as Form in Application.OpenForms
     .....
End For

这有帮助吗?