隐藏表单时,工具提示仍然可见

时间:2016-12-02 09:13:08

标签: c# winforms tooltip

我正在使用C#和WinForms创建一个截屏应用程序,所以我需要我的表单隐藏自己,以便它可以拍摄屏幕的图片。我已经完成了,但如果我在截取屏幕截图并弹出工具提示之前将鼠标悬停在New Screenshot按钮上,则工具提示不会隐藏在表单中,最终会出现在屏幕截图中。

我尝试将AutoToolTip属性设置为false并将工具提示文本设置为null,但这没有任何区别。

有一项工作是调用main_toolStrip.Dispose();,但当然它会在表单取消隐藏后从表单中消失。

到目前为止我已经有了这段代码:

private void newScreenshot_btn_Click(object sender, EventArgs e)
    {
        main_toolStrip.ShowItemToolTips = false;
        this.WindowState = FormWindowState.Minimized;
        this.Visible = false;
        this.ShowInTaskbar = false;
        System.Threading.Thread.Sleep(2000);
        //screenshot code is here
        main_toolStrip.ShowItemToolTips = true;
        this.ShowInTaskbar = true;
        this.Visible = true;
        this.Size = new Size(1000, 800);
        this.WindowState = FormWindowState.Normal;
        prepareMenus(); //enables the required buttons on the toolstrip
    }

正如您在代码中看到的那样,ShowItemToolTips也没有帮助。

但我并不特别想从按钮中删除工具提示。

图片:

这是我的程序截取的屏幕截图,演示了工具提示问题:

enter image description here

创建工具提示的工具栏按钮:

enter image description here

另请注意,这不是明确创建的ToolTip控件;如果您愿意,可以使用ToolStrip控件来“包含”。

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题,没有找到比禁用动画和淡入效果更好的解决方案,这些动画和淡入会导致工具提示保留并使用Application.DoEvents()。在某些情况下,它无需使用Application.DoEvents()就可以为我工作。之后,可以安全地重新启用动画和淡入淡出。

代码示例:

        toolTipMain.UseAnimation = false;
        toolTipMain.UseFading = false;
        toolTipMain.Hide(this);
        Application.DoEvents();
        toolTipMain.UseAnimation = true;
        toolTipMain.UseFading = true;