ボタンを 1 回クリックするだけで、アプリケーション内のすべてのアクティブなフォームを最小化するにはどうすればよいですか?
一度に複数のフォームを表示しています。フォームの 1 つのボタンをクリックすると、すべてのアクティブなフォームが最小化されます。
どうすればこれを達成できますか?
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
このように Application.Forms コレクションを反復処理できます。
For Each form as Form in Application.OpenForms
.....
End For
これは役に立ちますか?