2011-08-19 6 views
0

VB.Net 2008 Express Edition을도구 스트립 컨테이너 도구 스트립 분실 초점을 더블 클릭

"을 Form1은"버튼이있는 ToolStrip에 포함 된 ToolStripContainer1.TopToolStripPanel 있습니다. 버튼은 "Form1"이 활성화되어있을 때 한 번의 클릭으로 작동합니다. 다른 창을 클릭하고 "Form1"로 돌아 가면 ToolStrip 단추가 두 번 클릭하여 활성화됩니다. 첫 번째 클릭은 "Form1"에 포커스를 반환하고 후속 클릭은 버튼 이벤트를 시작합니다. 첫 번째 클릭에서 버튼이 작동하고 두 번 클릭하지 않아도됩니다.

"Form1"의 일반 단추는 ToolStrip의 일부가 아니므로 다른 창/양식에서 돌아올 때 첫 번째 클릭에 사용할 수 있습니다.

답변

1

이것은 일반적인 행동입니다. Microsoft Outlook은 포커스가없고 화면에 표시되는 툴 버튼을 클릭하면 똑같은 기능을 수행합니다.

그러나 당신이 당신의 자신의 버전으로 그 동작을 무시할 수 있습니다 :

Public Class ToolStripEx 
    Inherits ToolStrip 

    Private Const WM_MOUSEACTIVE As Int32 = &H21 

    Public Sub New() 
    MyBase.New() 
    End Sub 

    Protected Overrides Sub WndProc(ByRef m As Message) 
    If m.Msg = WM_MOUSEACTIVE AndAlso Me.CanFocus AndAlso Not Me.Focused Then 
     Me.Focus() 
    End If 
    MyBase.WndProc(m) 
    End Sub 

End Class 
+0

천재 ...! 처음으로 답변을 얻는 것은 매우 드뭅니다! –

+0

누군가이 코드를 호출하여 동작을 중지하는 방법에 대한 예를 나에게 줄 수 있습니까? 건배! –

+0

@ 4rd2 표준 ToolStrip 컨트롤을이 도구로 바꿉니다. 예제에서와 같이 새 클래스 파일을 만들고 솔루션을 다시 작성하면 ToolBox에서 새 ToolStripEx 컨트롤을 사용할 수 있어야합니다. – LarsTech