为什么单击 ToolStripMenuItem 需要两次单击?

pon*_*ing 3 .net c# visual-studio-2010 winforms

我有一个正在运行的 winform 应用程序,我在这个应用程序的顶部添加了一个 winform,它将向应用程序传递一些数据。将数据传递给应用程序后,将启用保存按钮以将数据保存到应用程序中。保存按钮是工具条菜单项。我面临的一个问题是当新添加的表单仍然存在时,我需要单击两次才能保存,即第一次单击将无法正确单击。或者,如果我关闭新添加的 winform 然后保存点击将第一次发生,或者如果我点击现有应用程序的任何部分,即焦点将在那里,那么第一次点击也可以。

Kle*_*nux 7

将此方法覆盖添加到包含工具条的表单中应该会处理它。

protected override void WndProc(ref Message m)
{
    const int WM_PARENTNOTIFY = 0x0210;
    if (m.Msg == WM_PARENTNOTIFY)
    {
        if (!Focused)
            Activate();
    }
    base.WndProc(ref m);
}
Run Code Online (Sandbox Code Playgroud)

工具条仅执行 Activate 调用,因此通过自己处理它会执行 Click 事件