工具条容器工具剥离焦点和双击

时间:2011-08-19 12:34:26

标签: vb.net button double-click toolstrip

VB.Net 2008 Express Edition

“Form1”有一个ToolStripContainer1.TopToolStripPanel,它包含一个带按钮的ToolStrip。当“Form1”处于活动状态时,按钮可以单击一次。如果我单击另一个窗口然后返回“Form1”,则ToolStrip按钮需要两次单击才能激活。第一次单击将焦点返回到“Form1”,随后的单击将触发按钮事件。我希望按钮能够在第一次点击时工作,而不需要两次点击。

请注意,从另一个窗口/窗体返回时,“Form1”上不是ToolStrip一部分的普通按钮在第一次单击时工作!!!! ????

1 个答案:

答案 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