ここでは、ツールチップ(ツールヒント)を表示する方法を説明します。ツールチップとは、例えば、Windowsのスタートボタンにマウスポインタを移動した時に表示される「このボタンからはじめます」がツールチップです。
指定したコントロールにマウスポインタを移動した時にツールチップが表示されるようにするには、ToolTipコンポーネントを使用します。
Visual Studioを使用しているのであれば、コントロールにツールチップを表示することは非常に簡単です。その手順を簡単に説明します。
フォームデザイナを使用しない場合は、自分でコードを書く必要があります。
以下にButton1とButton2にツールチップが表示されるようにするコードの例を示します。このコードは、フォームクラス内に記述されているものとします。
Dim ToolTip1 As ToolTip 'フォームのLoadイベントハンドラ Private Sub Form1_Load(ByVal sender As Object, _ ByVal e As EventArgs) Handles MyBase.Load 'ToolTipを作成する ToolTip1 = New ToolTip(Me.components) 'フォームにcomponentsがない場合 'ToolTip1 = new ToolTip(); 'ToolTipの設定を行う 'ToolTipが表示されるまでの時間 ToolTip1.InitialDelay = 2000 'ToolTipが表示されている時に、別のToolTipを表示するまでの時間 ToolTip1.ReshowDelay = 1000 'ToolTipを表示する時間 ToolTip1.AutoPopDelay = 10000 'フォームがアクティブでない時でもToolTipを表示する ToolTip1.ShowAlways = True 'Button1とButton2にToolTipが表示されるようにする ToolTip1.SetToolTip(Button1, "Button1です") ToolTip1.SetToolTip(Button2, "Button2です") End Sub
ToolTip ToolTip1; //フォームのLoadイベントハンドラ private void Form1_Load(object sender, EventArgs e) { //ToolTipを作成する ToolTip1 = new ToolTip(this.components); //フォームにcomponentsがない場合 //ToolTip1 = new ToolTip(); //ToolTipの設定を行う //ToolTipが表示されるまでの時間 ToolTip1.InitialDelay = 2000; //ToolTipが表示されている時に、別のToolTipを表示するまでの時間 ToolTip1.ReshowDelay = 1000; //ToolTipを表示する時間 ToolTip1.AutoPopDelay = 10000; //フォームがアクティブでない時でもToolTipを表示する ToolTip1.ShowAlways = true; //Button1とButton2にToolTipが表示されるようにする ToolTip1.SetToolTip(Button1, "Button1です"); ToolTip1.SetToolTip(Button2, "Button2です"); }
ToolTipクラスには、遅延時間を設定するためのプロパティが4つあります。これらのプロパティについて、説明しましょう。
InitialDelayプロパティには、ツールチップが表示されるまでの時間をミリ秒で指定します。マウスポインタをコントロールに移動させてしばらくすると、ツールチップが表示されますが、マウスポインタがコントロール上に移動してからツールチップが表示されるまでの時間を表すのがInitialDelayプロパティです。デフォルトは、500です。
表示されたツールチップは、マウスポインタがコントロールから出るか、一定時間が経過すると自動的に消えます。ツールチップが消えるまでの時間を表すのが、AutoPopDelayプロパティです。ミリ秒で指定し、デフォルトは5000です。
すでにツールチップが表示されており、マウスポインタを別のコントロールに移動して、ツールチップの内容が変更される時に、ツールチップが表示されるまでの時間を表すのが、ReshowDelayプロパティです。ミリ秒で指定し、デフォルトは100です。
上記3つのプロパティを一度に設定できるのが、AutomaticDelayプロパティです。AutomaticDelayプロパティに値を設定すると、InitialDelayプロパティはAutomaticDelay値と同じ値となり、AutoPopDelayプロパティはAutomaticDelay値の10倍となり、ReshowDelayプロパティはAutomaticDelay値の1/5となります。つまり、例えばAutomaticDelayプロパティに1000を設定したならば、InitialDelayプロパティは1000になり、AutoPopDelayプロパティは10000になり、ReshowDelayプロパティは200になります。
補足:AutoPopDelayプロパティで指定された時間が経過してToolTipが消えた後、再びそのコントロールにマウスを移動させてもToolTipが表示されないという不具合が「System.Windows.forms.ToolTip disappears after 5 seconds and does not reappear | Microsoft Connect」で報告されています。回避策として、ToolTipを表示するコントロールのMouseLeaveイベントハンドラで、ToolTip.Activeをfalseにしてからtrueにする方法が紹介されています。
ToolTipクラスのShowメソッドを使うことにより、フォーム上の指定した位置にツールチップを表示することができます。
以下に、フォームの(0, 0)の位置にツールチップを3秒間表示する例を示します。フォームに"ToolTip1"がすでに配置されており、以下のコードはこのフォームのクラスに記述されているものとします。
'ウィンドウ上の(0, 0)の位置にツールチップを3秒間表示する ToolTip1.Show("こんにちは。", Me, 0, 0, 3000)
//ウィンドウ上の(0, 0)の位置にツールチップを3秒間表示する ToolTip1.Show("こんにちは。", this, 0, 0, 3000);
Helpクラス(System.Windows.Forms名前空間)のShowPopupメソッドを使って、ツールチップのような「ポップアップウィンドウ」を表示することもできます。ShowPopupメソッドでは、画面上の任意の位置にポップアップウィンドウを表示することができます。
ShowPopupメソッドで表示したポップアップウィンドウは、見た目はツールチップに似ていますが、ツールチップではありません。ポップアップウィンドウを表示するとフォームは非アクティブになり、フォームをアクティブにするとポップアップウィンドウは消えます。
マウスポインタの位置にポップアップウィンドウを表示する例を以下に示します。
'マウスポインタの位置にポップアップウィンドウを表示する Help.ShowPopup(Me, "こんにちは。", Control.MousePosition)
//マウスポインタの位置にポップアップウィンドウを表示する Help.ShowPopup(this, "こんにちは。", Control.MousePosition);