2017-06-27 104 views
0

我通過將以下代碼包含在HelpRequested事件中,爲文本框創建了一個工具提示。無法隱藏工具提示

ToolTip^ toolTip_patterns = gcnew ToolTip; 
String^ caption; 

caption = "Help the user blah blah..."; 
toolTip_patterns->Show(caption, this->textBox_patternsTer); 

我希望在用戶離開文本框時工具提示消失。除非用戶再次按F1,否則不應顯示。我嘗試在Leave事件中使用下面的代碼隱藏工具提示。

ToolTip^ toolTip_patterns = gcnew ToolTip; 
toolTip_patterns->RemoveAll(); 

上述不起作用,所以我嘗試了以下。這也不起作用。

toolTip_patterns->Hide(this->textBox_patternsTer); 

當我使用這兩種方法(removeall過或隱藏),當用戶離開文本框工具提示消失,但是當他們將鼠標懸停在文本框中它回來。我在MouseHover事件中沒有任何代碼。它爲什麼這樣做?

謝謝!


更新...對不起,如果這不是輸入更新的正確位置。

感謝您的建議,但它不起作用。我從表單設計器向我的表單添加了一個ToolTip控件,現在我的每個控件都在toolTip_patterns上有一個名爲ToolTip的Property。我從HelpRequest事件中刪除了下面的聲明。

ToolTip^ toolTip_patterns = gcnew ToolTip 

我將下面的代碼設置爲顯示文本。

private: System::Void textBox_patterns_HelpRequested(System::Object^ sender, System::Windows::Forms::HelpEventArgs^ hlpevent) 
    { 
     String^ caption; 
     String^ module; 

     if (sender == textBox_patternsTer) 
      module = "Terminator"; 
     else if (sender == textBox_patternsSec) 
      module = "Secondary"; 
     else if (sender == textBox_patternsPri) 
      module = "Primary"; 
     else 
      return; // No help for selected control. 

     caption = "Enter 32 bit Hex patterns for the " + module + " one pattern per line.\n"; 

     toolTip_patterns->InitialDelay = 0; //< immediately show help 
     toolTip_patterns->Show(caption, (TextBox^)sender); 

我也嘗試了下面的非模態形式。

 toolTip_patterns->SetToolTip((TextBox^)sender, caption); 

工具提示顯示正常,當我將焦點移動到另一個控件並按F1時,顯示第二個控件的工具提示。問題是,當我將鼠標懸停在第一個控件上時,會顯示第一個控件的工具提示。我不希望在用戶退出控件後顯示工具提示。 Hide()方法不起作用,RemoveAll()方法不起作用,並且將標題設置爲「」不起作用。任何想法我做錯了什麼?謝謝。

回答

0

我會傾向於在用戶請求幫助時設置文本,然後在鼠標離開時清除它。

請注意,您需要在幫助請求呼叫和鼠標離開之間保留一個指向工具提示的指針,而不是爲每個呼叫分配一個請求幫助。如果你不這樣做,你就不會處理這個對象,並能夠對它進行操作。

ToolTip^ toolTip_patterns = gcnew ToolTip; 

void doHelpRequest() 
{ 
    String^ caption; 

    caption = "Help the user blah blah..."; 
    toolTip_patterns->Show(caption, this->textBox_patternsTer) 
    toolTip_patterns->InitialDelay = 0; //< immediately show help 
} 

然後

void doMouseLeave() 
{ 
    toolTip_patterns->Show("", this->textBox_patternsTer) 
} 
+0

我得到它通過我的代碼移動到MouseEnter事件工作。我不知道爲什麼它在HelpRequested事件中行爲不同,但我對此解決方案很滿意。我用你的建議工具Tip_patterns-> Show(「」,(TextBox ^)sender);在MouseLeave事件中。非常感謝您的幫助! –