2013-09-30 3 views
1

저는 VB.NET을 사용하고 있으며이를 최소화하기 위해 양식을 두 번 클릭 할 수있는 방법을 알고 싶습니다.두 번 클릭 양식 이벤트 VB.NET

나는 다음과 같은 코드를 가지고 있지만 작업 does'nt : 나는 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 

합니다.

+0

당신을 크기 조정 이벤트에 코드를 뭔가를하고? dbl을 클릭 할 때 휴식을 취하고이 줄이 실행되는지 확인 했습니까? Form Dbl Click (args가 올바르지 않음)처럼 보이지 않으므로 dbl을 클릭하려는 객체는 무엇입니까? – Plutonix

+2

잘 작동합니다. 오히려 클릭 한 내용에 달려 있습니다. 다른 컨트롤로 덮어 썼을 때 폼을 치는 것이 항상 가능한 것은 아닙니다. 사용자가 직접 작업한다는 것을 알게 될 것 같지 않다면 윈도우의 제목 표시 줄에있는 일반 MinimizeBox를 사용하는 것이 가장 좋습니다. –

+0

@ plutonix 만약 내가 최소화 윈도우 상태를 siple msgbox 두 번 클릭 dosnt 솔기 o 메시지 상자 중 하나를 트리거 ... 어떤 경우에는 양식 크기가 조정되지 않습니다 –

답변

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 

하지만 더블 클릭 어디서나 양식을 최소화 할 경우 이상한 사용자 경험이 될 것이라고 생각 ...