我有一个代码,它以标准的方式像这样设置Winforms控件的工具提示:-
工具提示工具提示=新工具提示(); ToolTip.SetToolTip(控制,文本);
在同一个应用程序中,有一个窗口正在使用Direct3D SDK以每秒5帧的速度呈现一些图像的电影。现在,当电影被呈现时,即当它处于游戏模式时,工具提示永远不会出现。一旦我暂停电影,工具提示就开始出现。
作为解决办法,我对代码做了如下修改-
工具提示工具提示=新工具提示(); toolTip.InitialDelay = 50; ToolTip.SetToolTip(控制,文本);
现在,当我介绍初始延迟时,不管电影播放与否,工具提示都呈现出来了?
如果我不输入初始延迟,而是订阅控件的OnMouseHover事件,然后将上述两行代码显式地放在偶数处理程序中,那么也不会丢失工具提示。它们看起来很正常。但是,这并不是显示工具提示的标准做法。
有人能在工具提示渲染中纠正我的错误吗?我使用的是.Net 2.0和C#。
发布于 2010-01-13 10:47:31
D3D视频和工具提示都使用覆盖(由于这一点,我使用过的屏幕捕获程序的数量不捕获工具提示);因此,我相信您正在看到来自D3D覆盖层的一些干扰。
可能是视频过度绘制工具提示,因为它是在播放过程中呈现的,所以工具提示就在那里,你就是看不到它。
我很困惑,然而,为什么设置一个最初的延迟会突然使它工作!也就是说,InitialDelay在工具提示第一次显示时就控制了应用于工具提示的延迟,因此它可能与工具提示抓取要显示的覆盖面的方式有关。
当然,我会用它作为解决办法,而不是重复构造和分配工具提示,就像另一个答案说的那样,它可能会破坏资源。
我会找到最小的可能的InitialDelay,并与之一起工作。
最后-我们在这里讨论的是什么版本的Windows和DX?还有几个其他线程,从这里开始,并在其中的一个指向GameDev的链接中,讨论工具提示和DirectX的问题;并且指出,这里可能发生的不仅仅是一些.Net古怪的事情!
发布于 2010-01-13 20:52:41
参见ToolTip组件(Windows ) at http://msdn.microsoft.com/en-us/library/he23h308(VS.85).aspx。具体来说,请查看How :在 http://msdn.microsoft.com/en-us/library/s894w4aa(VS.80).aspx的设计时上为Windows窗体上的控件设置ToolTips。
您没有正确地使用ToolTip。链接到的示例只说明如何创建ToolTip,而不是如何使用它。
发布于 2010-01-16 20:48:41
为你的案子修改这个。应该行得通。您应该设置所有这些属性。
// 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");https://stackoverflow.com/questions/2055405
复制相似问题