ToolStrip有时不响应鼠标点击

use*_*353 8 .net toolstrip winforms

我的主表单上有一个带有ToolStrip的.NET 2.0 WinForms应用程序.有时,ToolStrip图标不会响应第一次鼠标单击,因此我必须单击该图标两次.它只是一个带有几个图标和工具提示文本的标准ToolStrip,我没有做任何特别的事情.这是常见的吗?

Doc*_*own 23

我不久前遇到了同样的问题,我在Rick Brewster的博客中找到了解决方案.我们的想法是在派生类ToolStripEx中覆盖'WndProc'.该解决方案的核心如下所示:

protected override void WndProc(ref Message m)
{
    base.WndProc(ref m);

    if (m.Msg == NativeConstants.WM_MOUSEACTIVATE &&
        m.Result == (IntPtr)NativeConstants.MA_ACTIVATEANDEAT)
    {
        m.Result = (IntPtr)NativeConstants.MA_ACTIVATE;
    }
}
Run Code Online (Sandbox Code Playgroud)


小智 0

如果应用程序窗口尚未获得焦点,则必须单击 ToolStrip 按钮两次。第一次单击将焦点设置到窗口,第二次单击引发单击事件。(不幸的是)这是默认行为,并且是设计的\xe2\x80\x99s。Microsoft Word 显示相同的行为(即使 .NET ToolStrip 不是同一控件)。

\n

  • MS Word 和 .NET ToolStrip 按钮之间存在差异:当 Word 应用程序没有焦点时,Word 中的菜单和符号不会通过鼠标光标突出显示。仅当 Word 获得焦点时它们才会突出显示。另一方面,即使应用程序没有焦点,.NET ToolStrip 也会突出显示其按钮,假装单击鼠标会立即激活该按钮。 (5认同)