2010-01-13 75 views
3

我有它设置为提示一个WinForms代码以标准方式控制like this: -的Windows工具提示都没有得到显示

工具提示提示=新的提示();

toolTip.SetToolTip(controltext);

在同一个应用程序中,有一个窗口使用Direct3D SDK以每秒5帧的速度渲染一些图像的电影。现在,当正在渲染电影时,即处于播放模式时,工具提示不会出现。只要我暂停电影,工具提示开始出现。

  • CASE 1:

作为一种变通方法我做了以下改变到代码 -

工具提示提示=新工具提示();

toolTip.InitialDelay = 50;

toolTip.SetToolTip(控制文本);

现在,就像我介绍初始延迟一样,无论电影是否播放,都呈现工具提示?

  • 案例2:

如果我不把初始延迟,而是订阅控制的OnMouseHover事件,然后把上面的代码两行明确的,甚至处理,然后也工具提示不会丢失。他们正常出现。但是,这不是显示工具提示的标准做法。

有人可以纠正我在什么错误在这里的工具提示渲染?我正在使用.Net 2.0 & C#。

+2

这并不一定是Wiki。 – 2010-01-13 09:29:17

+1

这不是创建工具提示的标准方法。从实际的角度来看,MSDN的例子是错误的。该示例仅说明如何将ToolTip创建为控件,而不是如何将ToolTip用作组件。你想用它作为一个组件。 – AMissico 2010-01-13 21:00:25

回答

0

D3D视频和工具提示都使用覆盖(我已经使用了不捕获因为这个提示屏幕捕获程序的数量!);所以我相信你会看到来自D3D覆盖层的一些干扰。

可能是该视频被过度拉伸的提示,因为它在播放过程中所呈现 - 这样的提示是存在的,你就不能看到它。

我大惑不解,但是,为什么设置初始延迟会突然使它的工作!也就是说,InitialDelay控制首次显示时应用于工具提示的延迟,因此可能会改变工具提示如何抓取要显示的叠加表面。

当然,我会使用它作为替代方法,而不是重复建设和分配的提示,像其他回答说,它可以杀人的资源。

我会找到尽可能最小的InitialDelay,并与之一起工作。

最后 - 我们在这里讨论的Windows和DX版本是什么?还有其他一些线索,从here开始,并在其中的GameDev链接中,介绍工具提示和DirectX的问题;并指出可能会有更多的事情发生在这里,而不仅仅是一点.Net怪异!

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");