Jak wyświetlić etykietkę nad przyciskiem za pomocą Windows Forms ?
Jak wyświetlić etykietkę nad przyciskiem za pomocą Windows Forms ?
Odpowiedzi:
ToolTip jest w rzeczywistości formantem WinForm, który obsługuje wyświetlanie podpowiedzi dla wielu elementów w jednym formularzu.
Powiedz, że twój przycisk nazywa się MyButton.
Etykietka pojawi się automatycznie, gdy kursor najedzie na przycisk, ale jeśli chcesz go wyświetlić programowo, zadzwoń
MyToolTip.Show("Tooltip text goes here", MyButton)
w kodzie, aby wyświetlić etykietkę, oraz MyToolTip.Hide (MyButton), aby ponownie zniknęła.
Za pomocą projektanta formularzy:
Możesz także ustawić podpowiedź programowo za pomocą następującego wywołania:
this.toolTip1.SetToolTip(this.targetControl, "My Tool Tip");
Możesz użyć klasy ToolTip:
Tworzenie podpowiedzi dla kontrolki
Przykład:
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");
W przypadku domyślnej podpowiedzi można tego użyć -
System.Windows.Forms.ToolTip ToolTip1 = new System.Windows.Forms.ToolTip();
ToolTip1.SetToolTip(this.textBox1, "Hello world");
Dostosowaną podpowiedź można również zastosować w przypadku, gdy formatowanie jest wymagane w przypadku wiadomości podpowiedzi. Można to utworzyć poprzez niestandardowe formatowanie formularza i użycie go jako okna dialogowego podpowiedzi w przypadku zdarzenia najechania myszą kontrolki. Proszę sprawdzić poniższy link, aby uzyskać więcej informacji -
http://newapputil.blogspot.in/2015/08/create-custom-tooltip-dialog-from-form.html
Leniwe i kompaktowe przechowywanie tekstu we właściwości Tag
Jeśli jesteś trochę leniwy i nie używasz właściwości Tag elementów sterujących do niczego innego, możesz użyć jej do zapisania tekstu podpowiedzi i przypisać moduły obsługi zdarzeń MouseHover do wszystkich takich elementów sterujących za jednym razem:
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());
});
}
}
}
W tym przypadku wszystkim przyciskom posiadającym ciąg znaków we właściwości Tag przypisuje się zdarzenie MouseHover . Aby zachować kompaktowość, zdarzenie MouseHover jest definiowane bezpośrednio za pomocą wyrażenia lambda. W przypadku, gdy dowolny przycisk zostanie nałożony, jego etykieta zostanie przypisana do etykietki narzędzia i wyświetlona.
.NET Framework zapewnia klasę ToolTip. Dodaj jedną z nich do formularza, a następnie w zdarzeniu MouseHover dla każdego elementu, dla którego chcesz podpowiedź, wykonaj następujące czynności:
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");
}
Na podstawie odpowiedzi DaveK stworzyłem rozszerzenie kontroli:
public static void SetToolTip(this Control control, string txt)
{
new ToolTip().SetToolTip(control, txt);
}
Następnie możesz ustawić etykietkę dla dowolnego elementu sterującego za pomocą jednej linii:
this.MyButton.SetToolTip("Hello world");
Jasne, po prostu obsłuż kursor myszy i powiedz mu, aby wyświetlił podpowiedź. t to podpowiedź zdefiniowana w globals lub w konstruktorze przy użyciu:
ToolTip t = new ToolTip();
następnie moduł obsługi zdarzeń:
private void control_MouseHover(object sender, EventArgs e)
{
t.Show("Text", (Control)sender);
}