3

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

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

我怎样才能做到这一点?

4

2 回答 2

7

如果您不想最小化 MDI 子窗口,您可以简单地遍历应用程序中所有打开的窗体并将它们的WindowState属性设置为“最小化”。VB.NETOpenForms为您的类提供了一个集合Application,使这变得非常简单。

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

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


如果要在用户单击单个表单标题栏上的系统最小化框时最小化所有表单,则需要监听该事件并执行上述代码。为此,请覆盖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
于 2011-02-23T05:21:52.447 回答
3

您可以像这样遍历 Application.Forms 集合。

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

这有帮助吗?

于 2011-02-23T05:21:01.177 回答