Windows Forms kullanarak bir düğmenin üzerinde araç ipucunu nasıl görüntüleyebilirim ?
Windows Forms kullanarak bir düğmenin üzerinde araç ipucunu nasıl görüntüleyebilirim ?
Yanıtlar:
Araç İpucu aslında tek bir form üzerinde birden çok öğe için araç ipuçlarını görüntüleyen bir WinForms denetimidir.
Düğmenizin MyButton olduğunu söyle.
Araç ipucu imleç düğmenin üzerine geldiğinde otomatik olarak görünür, ancak programlı olarak görüntülemeniz gerekiyorsa
MyToolTip.Show("Tooltip text goes here", MyButton)
araç ipucunu göstermek için kodunuzda ve tekrar kaybolmak için MyToolTip.Hide (MyButton) 'u tıklayın.
Form tasarımcısını kullanma:
Araç ipucunu aşağıdaki çağrıyı kullanarak programlı olarak da ayarlayabilirsiniz:
this.toolTip1.SetToolTip(this.targetControl, "My Tool Tip");
ToolTip sınıfını kullanabilirsiniz:
Denetim için Araç İpucu Oluşturma
Misal:
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");
Varsayılan ipucu için bu kullanılabilir -
System.Windows.Forms.ToolTip ToolTip1 = new System.Windows.Forms.ToolTip();
ToolTip1.SetToolTip(this.textBox1, "Hello world");
Araç ipucu mesajı için biçimlendirme gerekiyorsa, özelleştirilmiş bir araç ipucu da kullanılabilir. Bu, formun özel biçimlendirilmesi ve denetimin fareyle üzerine gelme olayında araç ipucu iletişim kutusu olarak kullanılmasıyla oluşturulabilir. Daha fazla bilgi için lütfen aşağıdaki bağlantıyı kontrol edin -
http://newapputil.blogspot.in/2015/08/create-custom-tooltip-dialog-from-form.html
Tag özelliğinde tembel ve kompakt metin saklama
Biraz tembelseniz ve kontrollerin Tag özelliğini başka bir şey için kullanmıyorsanız, araç ipucu metnini saklamak ve MouseHover olay işleyicilerini bu gibi tüm denetimlere tek seferde atamak için kullanabilirsiniz:
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());
});
}
}
}
Bu durumda, Tag özelliğinde bir dizeye sahip tüm düğmelere bir MouseHover olayı atanır . MouseHover olayını kompakt tutmak için bir lambda ifadesi kullanılarak satır içi olarak tanımlanır. Vurgulanan herhangi bir düğmenin Etiket metnine Araç İpucu'na atanmış ve gösterilir.
.NET çerçevesi bir ToolTip sınıfı sağlar. Bunlardan birini formunuza ekleyin ve ardından araç ipucu almak istediğiniz her öğe için MouseHover olayında aşağıdakine benzer bir şey yapın:
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");
}
DaveK'ın cevabına dayanarak, bir kontrol uzantısı oluşturdum:
public static void SetToolTip(this Control control, string txt)
{
new ToolTip().SetToolTip(control, txt);
}
Ardından, herhangi bir kontrol için ipucunu tek bir satırla ayarlayabilirsiniz:
this.MyButton.SetToolTip("Hello world");
Elbette, mousehover olayını halledin ve bir araç ipucu görüntülemesini söyleyin. t, globallerde veya kurucuda aşağıdakileri kullanan bir araç ipucudur:
ToolTip t = new ToolTip();
sonra olay işleyici:
private void control_MouseHover(object sender, EventArgs e)
{
t.Show("Text", (Control)sender);
}