2017-06-27 14 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_patternsのToolTipという名前のプロパティが追加されました。 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); 

Iは、以下の非モーダルフォームを試してみました。

 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イベントで異なる動作をする理由はわかりませんが、私はこのソリューションでうまくいきます。あなたの提案toolTip_patterns-> Show( ""、(TextBox ^)送信者)を使用しました。 MouseLeaveイベントで発生します。助けをありがとう! –

関連する問題