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

Spo*_*nts 3 .net vb.net minimize winforms

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

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

我怎样才能做到这一点?

Cod*_*ray 7

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

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

For Each frm As Form in Application.OpenForms
    frm.WindowState = FormWindowState.Minimized
Next frm
Run Code Online (Sandbox Code Playgroud)


如果要在用户单击单个表单标题栏上的系统最小化框时最小化所有表单,则需要监听该事件,并执行上述代码.通过覆盖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
Run Code Online (Sandbox Code Playgroud)