Vb.net 工具条容器工具条失去焦点并双击
VB.NET2008快速版 “Form1”有一个ToolStripContainer1.TopToolStripPanel,其中包含一个带有按钮的ToolStrip。当“Form1”处于活动状态时,按钮只需单击一次即可工作。如果单击另一个窗口,然后返回“Form1”,则ToolStrip按钮需要单击两次才能激活。第一次单击将焦点返回到“Form1”,随后的单击将触发button事件。我希望按钮能在第一次点击时工作,而不需要两次点击Vb.net 工具条容器工具条失去焦点并双击,vb.net,button,double-click,toolstrip,Vb.net,Button,Double Click,Toolstrip,VB.NET2008快速版 “Form1”有一个ToolStripContainer1.TopToolStripPanel,其中包含一个带有按钮的ToolStrip。当“Form1”处于活动状态时,按钮只需单击一次即可工作。如果单击另一个窗口,然后返回“Form1”,则ToolStrip按钮需要单击两次才能激活。第一次单击将焦点返回到“Form1”,随后的单击将触发button事件。我希望按钮能在第一次点击时工作,而不需要两次点击 请注意,当从另一个窗口/表单返回时,“表单1”上的普通按钮不是T
请注意,当从另一个窗口/表单返回时,“表单1”上的普通按钮不是ToolStrip的一部分,在第一次单击时就可以工作 这是标准行为。如果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
天才。。。!第一次收到有效的答案是非常罕见的!有人能给我举个例子,说明你如何调用这个代码来停止这种行为吗?干杯@4rd2将标准ToolStrip控件替换为此控件。创建一个新的类文件,如示例中所示,重新生成解决方案,新的ToolStripEx控件应该在工具箱中可用。