1

VB.NET を使用していますが、フォームをダブルクリックして最小化する方法を知りたいです。

次のコードがありますが、機能しません。

Private Sub openPROJECTS_MouseDoubleClick(ByVal sender As Object, ByVal e As MouseEventArgs) Handles Me.MouseDoubleClick
    'Minimize the form
    Me.WindowState = FormWindowState.Minimized
End Sub

私はVB.NETを使用しています。

4

1 に答える 1

0

問題は、すべてのコントロールに独自のダブルクリック イベントがあるため、フォーム上のパネルなどをダブルクリックしても、フォームのダブルクリック イベントが発生しないことです。

ただし、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

しかし、どこかをダブルクリックしてフォームを最小化すると、奇妙なユーザーエクスペリエンスになると思います...

于 2013-09-30T14:39:59.400 に答える