2012-02-12 75 views
0

我怎樣才能設置就地工具提示:我無法控制的文本只是想: enter image description here如何實現就地工具提示

我已經用ToolTip.Show方法

使用這種類型的工具提示
ToolTip ttpInplace = new ToolTip(); 
ttpInplace.Show(textbox1.Text, textbox1, 0, 0, 4000); 

     private void FormToolPopup_MouseEnter(object sender, EventArgs e) 
     { 
      if (ttpCustomToolTip != null) 
      { 
       ttpCustomToolTip.Hide(textBox1); 
      } 
     } 

     private void textBox1_MouseEnter(object sender, EventArgs e) 
     { 
      Size s = TextRenderer.MeasureText(textBox1.Text, textBox1.Font); 
      if (s.Width > textBox1.Width) 
      { 
       ttpCustomToolTip.Show(textBox1.Text, textBox1, -4, 0);//, 5000); 
      } 
     } 

但它閃爍。 我已閱讀 http://msdn.microsoft.com/en-us/library/windows/desktop/hh298402(v=vs.85).aspx 的文章,但我有問題要實現,因爲它是在C++中。 任何人都可以幫助我嗎?

+0

中斷?這與中斷有什麼關係? 「使用中斷」是什麼意思? – 2012-02-12 13:06:54

+0

我的意思是發送工具提示信息。對不起。 – 2012-02-12 13:08:40

+0

你在用什麼?的WinForms? WPF?還有別的嗎? – svick 2012-02-12 13:12:37

回答

5

是的,它會閃爍,因爲您在與鼠標相同的位置顯示工具提示。所以工具提示會得到一個直接的鼠標移動信息。這使得提示消失。這導致MouseEnter事件再次觸發。 Etcetera,flickorama。

一個解決方法是捕獲鼠標,因此它不能將消息發送到工具提示:當用戶點擊鼠標

textBox1.Capture = true; 
    ttpCustomToolTip.Show(textBox1.Text, textBox1, -4, 0);//, 5000); 

捕獲被自動取消。可能是夠好的,你可能不得不將它設置爲假。依靠。最好的辦法是實現MouseMove事件,並在看到它移出控件時取消工具提示和捕獲。您還必須採取措施才能使文本框可用,您的工具提示會阻止訪問。至少有一個你不經常看到這個使用的原因。如果不打算編輯,那麼一定要使用標籤。請注意其AutoEllipsis屬性。

+0

@ Hans Passant!它停止閃爍。非常感謝,但在離開textbox1時隱藏工具提示的最佳方式是什麼? – 2012-02-12 13:42:46

+0

我在答案的最後一段明確提到了這一點。 – 2012-02-12 14:29:52

+0

@ Hans Passant:如果textBox1.Capture = true,那麼所有事件都被阻塞,直到鼠標單擊並且無法將textBox1.Capture設置爲false。 – 2012-02-12 14:37:13