2009-08-27 4 views
130

私はToolTipと表示したいいくつかのコントロールを、マウスがその上に乗っているときに表示します。これどうやってするの?私はコードでこれを正しく行う方法を知りたいが、デザイナーでもある(ツールボックスにはToolTipコンポーネントがあるが、それは得られない)。C#:コントロールにツールヒントを追加するにはどうすればよいですか?

これが重複していると私は驚くことはありませんが、より高度な具体的なシナリオに関する質問しか見つけることができません。私は基本を知りたいです。

+0

[テキストのマウスホバー上のツールチップを表示する]の可能な重複(http://stackoverflow.com/questions/873175/displaying-tooltip-on-mouse-hover-of-a - テキスト) –

+0

関連、古い(一般的に.NETに適用):https://stackoverflow.com/questions/168550/display-a-tooltip-over-a-button-using-windows-forms –

答えて

168

Hereは、フォーム上にコード

private void Form1_Load(object sender, System.EventArgs e) 
{ 
     // Create the ToolTip and associate with the Form container. 
     ToolTip toolTip1 = new ToolTip(); 

     // Set up the delays for the ToolTip. 
     toolTip1.AutoPopDelay = 5000; 
     toolTip1.InitialDelay = 1000; 
     toolTip1.ReshowDelay = 500; 
     // Force the ToolTip text to be displayed whether or not the form is active. 
     toolTip1.ShowAlways = true; 

     // Set up the ToolTip text for the Button and Checkbox. 
     toolTip1.SetToolTip(this.button1, "My button1"); 
     toolTip1.SetToolTip(this.checkBox1, "My checkBox1"); 
} 
+3

だから私'toolTip1'変数がスコープから外れるかどうかは関係ありませんか? – Svish

+0

まあ、それは重要です。他の関数からそれを管理したい場合は、クラスメンバにする方が良いです。 –

+1

すべてのフォームの静的な 'ToolTip'はどうでしょうか? – Svish

111

ドラッグしてツールボックスからツールチップコントロールをそれを行うためのあなたの記事です。あなたは本当に名前以外のプロパティを与える必要はありません。次に、ツールヒントを表示するコントロールのプロパティで、追加したばかりのツールチップコントロールの名前を持つ新しいプロパティを探します。カーソルがコントロールをホバーすると、デフォルトでツールチップが表示されます。

+1

これはとても良い答えです。シンプルさが重要です。 –

+36

これを実行するとき(午前2時など)、ToolTipコントロールを使用し、ToolStripコントロールは使用しないようにしてください。 –

+1

この回答では、winformに単一のツールチップを追加するだけで、フォーム内のすべてのコントロールが独自のツールチップになります。 – SAm

34
  1. リストにあなたはと呼ばれるプロパティを見つけるだろう、あなたは
  2. を開き、プロパティグリッド(F4)のツールヒントが欲しいのコントロールのいずれかを選択し、フォーム
  3. にツールチップコンポーネントを追加します。 "toolTip1のツールヒント"(または同様のもの)。そのプロパティで目的のツールチップテキストを設定します。
  4. 他の対照については2-3を繰り返す。
  5. 完了。ここで

トリックは、ツールヒントコントロールは、それが他のコントロールフォーム上のプロパティのセットを拡張することを意味エクステンダー制御、ということです。シーンの背後では、これはSvetlozarの答えのようなコードを生成することによって達成されます。同じ方法で動作する他のコントロールがあります(HelpProviderなど)。

+1

異なるテキストの多くのコントロールで同じツールヒントを使用できますか? – Svish

+0

@Svish:はい、エクステンダーコントロールの目的です。 –

+0

クロスコントロールやフォームも使用できますか?標準プロパティ値を使用して静的ツールチップを作成した場合と同様です。それとも悪い習慣とみなされますか? – Svish

-2

コントロールのToolTipTextNeededイベントを購読し、eTooltipTextを返すだけで、はるかに簡単です。

+4

標準のWinFormコントロールイベントではないと思います。 – Dan7

5

C#のツールヒントは、ほぼすべてのUIコントロールに簡単に追加できます。このためにMouseHoverイベントを追加する必要はありません。

これは、IT-

  1. がフォームにToolTipオブジェクトを追加行う方法です。 1つのオブジェクトはフォーム全体で十分です。 ToolTip toolTip = new ToolTip();

  2. コントロールを目的のテキストでツールチップに追加します。

    toolTip.SetToolTip(Button1,"Click here");