ToolTip

ToolStripStatusStripのように独自にツールチップを実装するクラスでは、このToolTipクラスを用いる必要はありません。

クラス階層

  • System.ComponentModel.Component
    • System.Windows.Forms.ToolTip

コンストラクタ

public ToolTip (System.ComponentModel.IContainer cont);
ToolTip(IContainer) - ToolTip Constructor (System.Windows.Forms) | Microsoft Learn

引数でコンテナを指定しておくことで、それが破棄されるときにToolTipも破棄されるようになります。

プロパティ

表示タイミング
プロパティ 内容 既定値
int AutomaticDelay 以下の3つのプロパティ、InitialDelay、ReshowDelay、AutoPopDelayの一括指定

(このプロパティに設定すると、以下の3つのプロパティの値が上書きされる)

500ミリ秒
int InitialDelay ツールチップが表示されるまでの時間 AutomaticDelay
int ReshowDelay 他のコントロールに移動したときに、ツールチップが表示されるまでの時間 AutomaticDelay / 5
int AutoPopDelay ポインタが静止しているときに、ツールチップを表示する時間。つまり自動で非表示になるまでの時間

この値の上限は5000ミリ秒のため、それより長く表示するにはToolTipを継承したクラスを作成し、StopTimer()を呼ぶ

AutomaticDelay * 10
プロパティ 内容
bool Active falseにすると、ツールチップが無効になり表示されなくなる
bool ShowAlways trueにすると、親コントロールがアクティブでなくてもツールチップが表示される

(通常は親コントロールがアクティブでなければ、ポインタを合わせてもツールチップは表示されない。このプロパティはその制限を無効にするもので、モードレス ウィンドウで特に有効)

Color ForeColor ツールチップの前景色 (テキストの色)。オーナー描画でなければ無視される
Color BackColor ツールチップの背景色。オーナー描画でなければ無視される
プロパティ - ToolTip クラス (System.Windows.Forms) | Microsoft Learn

OwnerDraw

色やフォントを変更するにはこれをtrueとし、Drawイベントに応答します。

private void toolTip1_Draw(object sender, DrawToolTipEventArgs e)
{
    e.DrawBackground();
    e.DrawBorder();

    e.Graphics.DrawString(e.ToolTipText, this.Font, SystemBrushes.InfoText, e.Bounds);

    // フォントを変更する必要がなければ、DrawText()を呼ぶだけで良い
    // e.DrawText();
}

フォントを変更すると必要とされる表示領域のサイズも変化する可能性があるため、Popupイベントでツールチップのサイズを設定します。

private void toolTip1_Popup(object sender, PopupEventArgs e)
{
    ToolTip toolTip = (ToolTip)sender;
    e.ToolTipSize = TextRenderer.MeasureText(toolTip.GetToolTip(e.AssociatedControl), this.Font);
}

メソッド

メソッド 機能
SetToolTip(Control, String) 指定のコントロールに、ツールチップを関連付けられる。InitialDelayの経過後に表示される
GetToolTip(Control) 指定のコントロールに関連付けられている、ツールチップのテキストを取得できる
RemoveAll() ツールチップに関連付けられている、すべてのツールチップのテキストを削除できる
Show(String, IWin32Window) 指定のウィンドウにツールチップを関連付け、表示できる。即座に表示される
Hide(IWin32Window) 指定のウィンドウに関連付けられた、ツールチップを非表示にできる
   

SetToolTip()

指定のコントロールに、ツールチップ テキストを関連付けられます。

public void SetToolTip(
    Control control, // ツールチップを関連付けるコントロール
    string caption   // コントロール上にポインタがあるときに表示されるテキスト
)
ToolTip.SetToolTip(Control, String) メソッド (System.Windows.Forms) | Microsoft Learn
ToolTip toolTip = new ToolTip();

toolTip.SetToolTip(this.control1, "SAMPLE1");
toolTip.SetToolTip(this.control2, "SAMPLE2");

異なるコントロールにそれぞれ異なるテキストを設定できます。同一のコントロールに異なるテキストを設定した場合は、新しいテキストに変更されます。

特定のコントロールのツールチップを削除するには、controlでそのコントロールを指定しcaptionをnullとします。一方ですべてのツールチップを削除するには、RemoveAll()を呼びます。

テキストを途中で改行させるには、「\r\n」と記述します。

Show()

ツールチップを表示するコントロールとテキストを指定して、ツールチップを表示できます。

public void Show(
    string text,
    IWin32Window window
)
Show(String, IWin32Window) - ToolTip.Show メソッド (System.Windows.Forms) | Microsoft Learn
public void Show(
    string text,
    IWin32Window window,
    Point point, // 表示する場所。コントロールの相対位置
    int duration // 表示する時間。ミリ秒単位
)
Show(String, IWin32Window, Point, Int32) - ToolTip.Show メソッド (System.Windows.Forms) | Microsoft Learn

イベント

イベント 発生タイミング
Popup ツールチップが最初に表示される前
Draw OwnerDrawがtrueで、IsBalloonがfalseのときに、ツールチップが描画されるとき
Microsoft Learnから検索