ToolTip
マウスをその上に置いたときに表示するコントロールがいくつかあります。これどうやってするの?これをコード内だけでなくデザイナでも適切に実行する方法を知りたい(ToolTip
ツールボックスにコンポーネントがありますが、わかりません)。
これが重複していても驚くことはありませんが、より高度な特定のシナリオに関する質問しか見つけることができません。基本を知りたいのですが。
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");
}
toolTip1
変数がスコープから外れたかどうかは問題ではないと思いますか?
ToolTip
すべてのフォームに1つのstatic はどうですか?
ツールチップコントロールをツールボックスからフォームにドラッグします。名前以外のプロパティを実際に指定する必要はありません。次に、ツールチップを表示したいコントロールのプロパティで、追加したツールチップコントロールの名前で新しいプロパティを探します。デフォルトでは、カーソルがコントロールの上に置かれたときにツールチップが表示されます。
ここでのトリックは、ToolTipコントロールがエクステンダーコントロールであることです。つまり、フォーム上の他のコントロールのプロパティのセットを拡張します。舞台裏では、これはSvetlozarの答えのようにコードを生成することによって達成されます。同じように機能する他のコントロールがあります(などHelpProvider
)。
この方法で行いました。イベントを任意のコントロールに追加し、コントロールのタグを設定し、適切なコントロール/タグのツールチップを処理する条件を追加します。
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);
}
}
コントロールのToolTipTextNeededイベントをサブスクライブして、e.TooltipTextを返すだけです。