Windows工具提示未显示

时间:2010-01-13 08:46:13

标签: c# tooltip

我有一个代码,以标准方式为like this设置Winforms控件的工具提示: -

  

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

     

toolTip.SetToolTip( control text );

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

  • 案例1:

作为一种解决方法,我对代码进行了以下更改 -

  

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

     

toolTip.InitialDelay = 50;

     

toolTip.SetToolTip( control text );

现在,作为我引入INITIAL DELAY的笨蛋,无论电影是否正在播放,都会呈现工具提示?

  • 案例2:

如果我没有放置Initial Delay而是订阅控件的OnMouseHover事件,然后将上面两行代码显式地放在even处理程序中,那么工具提示也不会丢失。它们通常出现。但是,这不是显示工具提示的标准做法。

任何人都可以在Tooltips渲染中纠正我的错误吗?我正在使用.Net 2.0& C#。

3 个答案:

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