2010-01-13 76 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");