Wie kann ich mit Windows Forms einen Tooltip über eine Schaltfläche anzeigen ?
Wie kann ich mit Windows Forms einen Tooltip über eine Schaltfläche anzeigen ?
Antworten:
Die QuickInfo ist eigentlich ein WinForms-Steuerelement, mit dem QuickInfos für mehrere Elemente in einem einzigen Formular angezeigt werden.
Angenommen, Ihre Schaltfläche heißt MyButton.
Der Tooltip wird automatisch angezeigt, wenn sich der Cursor über der Schaltfläche befindet. Wenn Sie ihn jedoch programmgesteuert anzeigen müssen, rufen Sie ihn auf
MyToolTip.Show("Tooltip text goes here", MyButton)
in Ihrem Code, um den Tooltip anzuzeigen, und MyToolTip.Hide (MyButton), damit er wieder verschwindet.
Verwenden des Formular-Designers:
Sie können den Tooltip auch programmgesteuert mit dem folgenden Aufruf einstellen:
this.toolTip1.SetToolTip(this.targetControl, "My Tool Tip");
Sie können die ToolTip-Klasse verwenden:
Erstellen einer QuickInfo für ein Steuerelement
Beispiel:
private void Form1_Load(object sender, System.EventArgs e)
{
System.Windows.Forms.ToolTip ToolTip1 = new System.Windows.Forms.ToolTip();
ToolTip1.SetToolTip(this.Button1, "Hello");
}
new ToolTip().SetToolTip(this.Button1, "Hello");
Für den Standard-Tooltip kann dies verwendet werden -
System.Windows.Forms.ToolTip ToolTip1 = new System.Windows.Forms.ToolTip();
ToolTip1.SetToolTip(this.textBox1, "Hello world");
Ein angepasster Tooltip kann auch verwendet werden, wenn für Tooltip-Nachrichten eine Formatierung erforderlich ist. Dies kann durch benutzerdefiniertes Formatieren des Formulars erstellt und als QuickInfo-Dialogfeld für das Maus-Hover-Ereignis des Steuerelements verwendet werden. Bitte überprüfen Sie den folgenden Link für weitere Details -
http://newapputil.blogspot.in/2015/08/create-custom-tooltip-dialog-from-form.html
Fauler und kompakter Speichern von Text in der Tag- Eigenschaft
Wenn Sie etwas faul sind und die Tag- Eigenschaft der Steuerelemente für nichts anderes verwenden, können Sie damit den Tooltip-Text speichern und allen Steuerelementen auf einmal MouseHover- Ereignishandler zuweisen :
private System.Windows.Forms.ToolTip ToolTip1;
private void PrepareTooltips()
{
ToolTip1 = new System.Windows.Forms.ToolTip();
foreach(Control ctrl in this.Controls)
{
if (ctrl is Button && ctrl.Tag is string)
{
ctrl.MouseHover += new EventHandler(delegate(Object o, EventArgs a)
{
var btn = (Control)o;
ToolTip1.SetToolTip(btn, btn.Tag.ToString());
});
}
}
}
In diesem Fall wird allen Schaltflächen mit einer Zeichenfolge in der Tag- Eigenschaft ein MouseHover- Ereignis zugewiesen . Um es kompakt zu halten, wird das MouseHover- Ereignis mithilfe eines Lambda-Ausdrucks inline definiert. Für den Fall, dass bei einer schwebenden Schaltfläche der Tag- Text dem Tooltip zugewiesen und angezeigt wird.
Das .NET Framework bietet eine ToolTip-Klasse. Fügen Sie eine davon zu Ihrem Formular hinzu und führen Sie dann im MouseHover-Ereignis für jedes Element, für das Sie einen Tooltip wünschen, Folgendes aus:
private void checkBox1_MouseHover(object sender, EventArgs e)
{
toolTip1.Show("text", checkBox1);
}
private void Form1_Load(object sender, System.EventArgs e)
{
ToolTip toolTip1 = new ToolTip();
toolTip1.AutoPopDelay = 5000;
toolTip1.InitialDelay = 1000;
toolTip1.ReshowDelay = 500;
toolTip1.ShowAlways = true;
toolTip1.SetToolTip(this.button1, "My button1");
toolTip1.SetToolTip(this.checkBox1, "My checkBox1");
}
Basierend auf DaveKs Antwort habe ich eine Steuerungserweiterung erstellt:
public static void SetToolTip(this Control control, string txt)
{
new ToolTip().SetToolTip(control, txt);
}
Anschließend können Sie den Tooltip für jedes Steuerelement mit einer einzelnen Zeile festlegen:
this.MyButton.SetToolTip("Hello world");
Sicher, behandeln Sie einfach das Mousehover-Ereignis und weisen Sie es an, einen Tooltip anzuzeigen. t ist ein Tooltip, der entweder in den Globals oder im Konstruktor definiert wird mit:
ToolTip t = new ToolTip();
dann der Event-Handler:
private void control_MouseHover(object sender, EventArgs e)
{
t.Show("Text", (Control)sender);
}