我正在使用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
也没有帮助。
但我并不特别想从按钮中删除工具提示。
图片:
这是我的程序截取的屏幕截图,演示了工具提示问题:
创建工具提示的工具栏按钮:
另请注意,这不是明确创建的ToolTip
控件;如果您愿意,可以使用ToolStrip
控件来“包含”。
答案 0 :(得分:0)
我遇到了同样的问题,没有找到比禁用动画和淡入效果更好的解决方案,这些动画和淡入会导致工具提示保留并使用Application.DoEvents()
。在某些情况下,它无需使用Application.DoEvents()
就可以为我工作。之后,可以安全地重新启用动画和淡入淡出。
代码示例:
toolTipMain.UseAnimation = false;
toolTipMain.UseFading = false;
toolTipMain.Hide(this);
Application.DoEvents();
toolTipMain.UseAnimation = true;
toolTipMain.UseFading = true;