問題は、すべてのコントロールに独自のダブルクリック イベントがあるため、フォーム上のパネルなどをダブルクリックしても、フォームのダブルクリック イベントが発生しないことです。
ただし、MessageFilterを追加することもできます。
Public Class Minimizer
Implements IMessageFilter
Private Const WM_LBUTTONDBLCLK As Integer = &H203
ReadOnly _form As Form
Public Sub New(f As Form)
_form = f
End Sub
Public Function PreFilterMessage(ByRef m As Message) As Boolean Implements IMessageFilter.PreFilterMessage
If m.Msg = WM_LBUTTONDBLCLK Then
_form.WindowState = FormWindowState.Minimized
End If
Return False
End Function
End Class
そしてちょっとしたテスト:
Private Sub Main()
Dim f = New Form()
f.Controls.Add(New Panel() With { .Dock = DockStyle.Fill })
Application.AddMessageFilter(New Minimizer(f))
f.ShowDialog()
End Sub
しかし、どこかをダブルクリックしてフォームを最小化すると、奇妙なユーザーエクスペリエンスになると思います...