2016-11-14 3 views
0

を1つのコントロールを削除辞書に何かを追加するようなものです:Winフォームコントロールにツールチップを設定する.NET WinFormsの中でヒントから

ToolTip tt = new ToolTip(); 
tt.SetToolTip(control, "tooltip text"); 

nullにコントロールのテキストを設定すると、ツールチップで表示しないようにアプリケーションを作成しますもうコントロール:

tt.SetToolTip(control, null); 

ttは制御の参照を保持している必要があります。私は、コントロールの削除(と処理)がメモリリークを引き起こさないので、私はツールチップからコントロールの参照を削除する必要があることを確認したいと思います。 nullに設定すると参照が削除されますか?それとも、ヌル値で辞書を制御するのでしょうか?後者の場合、どのようにこの1つのコントロールを削除するのが良いですか? (私は(tt.RemoveAllを知っている)が、私は他のツールチップを維持する必要があります。)

+0

こんにちは、あなたがここにあなたの答えを見つけることができます。http://stackoverflow.com/questions/3903878/c-should-object-variables-be-assigned-to-nullあなたは値を設定するべきではありません明示的にnullにするあなたが処分できるものはすべて廃棄し、残りはガベージコレクションによって処理されます。 – Sebi

答えて

1

あなたはTooltip.SetToolTipのソースコードを見てみることができ、
here for SetToolTipInternal
toolsはハッシュテーブルで、通過nullは呼び出しを行いますtools.Remove(control)

 ... 
     bool exists = false; 
     bool empty = false; 

     if (tools.ContainsKey(control)) { 
      exists = true; 
     } 

     if (info == null || String.IsNullOrEmpty(info.Caption)) { 
      empty = true; 
     } 

     if (exists && empty) { 
      tools.Remove(control); 
     } 
     ... 
+0

私はhttp://referencesource.microsoft.comを見逃してしまった...今まで! – Feri

関連する問題