我有一个代码,以标准方式为like this设置Winforms控件的工具提示: -
工具提示工具提示=新工具提示();
toolTip.SetToolTip( control , text );
在同一个应用程序中,有一个Window使用Direct3D SDK以每秒5帧的速度渲染一些图像的电影。现在,当正在渲染电影时,即当它处于播放模式时,工具提示永远不会出现。一旦我暂停电影,工具提示就会开始出现。
作为一种解决方法,我对代码进行了以下更改 -
工具提示工具提示=新工具提示();
toolTip.InitialDelay = 50;
toolTip.SetToolTip( control , text );
现在,作为我引入INITIAL DELAY的笨蛋,无论电影是否正在播放,都会呈现工具提示?
如果我没有放置Initial Delay而是订阅控件的OnMouseHover事件,然后将上面两行代码显式地放在even处理程序中,那么工具提示也不会丢失。它们通常出现。但是,这不是显示工具提示的标准做法。
任何人都可以在Tooltips渲染中纠正我的错误吗?我正在使用.Net 2.0& C#。
答案 0 :(得分:0)
D3D视频和工具提示都使用叠加(我使用的屏幕捕获程序的数量,因此没有捕获工具提示!);所以我相信你会看到D3D叠加层的一些干扰。
可能是视频覆盖了工具提示,因为它在播放过程中被渲染 - 所以工具提示就在那里,你根本看不到它。
然而,我很困惑,为什么设置一个初始延迟会突然变得有效!也就是说,InitialDelay会在第一次显示工具提示时控制应用于工具提示的延迟,因此可能与更改工具提示如何抓取要显示的覆盖表面有关。当然,我会使用它作为解决方法而不是重复构建和分配工具提示,就像其他答案所说的那样,它可能会谋杀资源。
我会找到可行的最小的InitialDelay并继续使用它。
最后 - 我们在这里谈论的是什么版本的Windows和DX?还有一些其他线程,从here开始,并在其中的GameDev链接中,关于工具提示和DirectX的问题;并指出这里可能会有更多的东西,而不仅仅是一些.Net的怪异!
答案 1 :(得分:0)
请参阅http://msdn.microsoft.com/en-us/library/he23h308(VS.85).aspx处的工具提示组件(Windows窗体)。具体来说,请查看 如何:在设计时在Windows窗体上设置工具提示 http://msdn.microsoft.com/en-us/library/s894w4aa(VS.80).aspx 。
您没有正确使用工具提示。您链接的示例仅显示如何创建工具提示,而不是如何使用它。
答案 2 :(得分:0)
为您修改此案例。应该管用。您应该设置所有这些属性。
// Create the ToolTip and associate with the Form container.
ToolTip toolTip = new ToolTip();
// Set up the delays for the ToolTip.
toolTip.AutoPopDelay = 15000;
toolTip.InitialDelay = 300;
toolTip.ReshowDelay = 300;
// Force the ToolTip text to be displayed whether or not the form is active.
toolTip.ShowAlways = true;
// Set up the ToolTip text for the Buttons
toolTip.SetToolTip(this.button2, "TooltipText1");
toolTip.SetToolTip(this.button3, "TooltipText2");