VB.Net 2008 Express Edition
“Form1”有一个ToolStripContainer1.TopToolStripPanel,它包含一个带按钮的ToolStrip。当“Form1”处于活动状态时,按钮可以单击一次。如果我单击另一个窗口然后返回“Form1”,则ToolStrip按钮需要两次单击才能激活。第一次单击将焦点返回到“Form1”,随后的单击将触发按钮事件。我希望按钮能够在第一次点击时工作,而不需要两次点击。
请注意,从另一个窗口/窗体返回时,“Form1”上不是ToolStrip一部分的普通按钮在第一次单击时工作!!!! ????
答案 0 :(得分: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