3

ボタンを 1 回クリックするだけで、アプリケーション内のすべてのアクティブなフォームを最小化するにはどうすればよいですか?

一度に複数のフォームを表示しています。フォームの 1 つのボタンをクリックすると、すべてのアクティブなフォームが最小化されます。

どうすればこれを達成できますか?

4

2 に答える 2

7

MDI 子ウィンドウを最小化しようとしていない場合は、アプリケーションで開いているすべてのフォームを単純にループし、それらのWindowStateプロパティを「最小化」に設定できます。VB.NET は、これを驚くほど簡単にするクラスのOpenFormsコレクションを提供します。Application

次のサンプル コードをClickボタン コントロールのイベント ハンドラーまたは同様のメソッドに配置します。

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


ユーザーが 1 つのフォームのタイトル バーにあるシステムの最小化ボックスを クリックしたときにすべてのフォームを最小化したい場合は、そのイベントをリッスンして上記のコードを実行する必要があります。OnSizeChangedこれを行うには、開いているすべてのフォームに最小化イベントを適用する各フォームのメソッドをオーバーライドします。

また、フォームの 1 つがタスクバー アイコンをクリックして復元されるたびに、すべてのフォームを通常の状態に復元することもできます。ウィンドウを最小化するのと同じ手順を逆にして、「最小化」ではなく「通常」のウィンドウ状態を指定します。

たとえば、次のコードを記述できます。

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 に答える