マウスがホバーしているときにToolTip
を表示したいコントロールがいくつかあります。これどうやってするの?これをコードで適切に行う方法を知りたいのですが、デザイナーでも同様です(ツールボックスにはToolTip
コンポーネントがありますが、わかりません)。
これが重複していても驚かないでしょうが、より高度で特定のシナリオに関する質問しか見つけることができません。基本を知りたいです。
ここ はコードでそれを行うための記事です
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");
}
ツールボックスからフォームにツールチップコントロールをドラッグします。名前以外のプロパティを指定する必要はありません。次に、ツールチップをオンにするコントロールのプロパティで、追加したツールチップコントロールの名前を持つ新しいプロパティを探します。デフォルトでは、カーソルがコントロールをホバーするとツールチップが表示されます。
ここでの秘trickは、ToolTipコントロールがエクステンダーコントロールであるということです。つまり、フォーム上のその他のコントロールのプロパティセットを拡張します。舞台裏では、Svetlozarの答えのようなコードを生成することでこれを実現しています。同じ方法で機能する他のコントロールがあります(HelpProvider
など)。
C#のToolTipは、ほとんどすべてのUIコントロールに非常に簡単に追加できます。このためにMouseHoverイベントを追加する必要はありません。
これがその方法です-
ToolTipオブジェクトをフォームに追加します。フォーム全体に1つのオブジェクトで十分です。 ToolTip toolTip = new ToolTip();
目的のテキストを使用して、コントロールをツールチップに追加します。
toolTip.SetToolTip(Button1,"Click here");
私はこのようにしました:イベントをコントロールに追加し、コントロールのタグを設定し、適切なコントロール/タグのツールチップを処理する条件を追加します。
private void Info_MouseHover(object sender, EventArgs e)
{
Control senderObject = sender as Control;
string hoveredControl = senderObject.Tag.ToString();
// only instantiate a tooltip if the control's tag contains data
if (hoveredControl != "")
{
ToolTip info = new ToolTip
{
AutomaticDelay = 500
};
string tooltipMessage = string.Empty;
// add all conditionals here to modify message based on the tag
// of the hovered control
if (hoveredControl == "save button")
{
tooltipMessage = "This button will save stuff.";
}
info.SetToolTip(senderObject, tooltipMessage);
}
}