Як я можу відобразити підказку над кнопкою за допомогою Windows Forms ?
Як я можу відобразити підказку над кнопкою за допомогою Windows Forms ?
Відповіді:
ToolTip - це фактично елемент управління WinForms, який обробляє відображення підказок інструментів для декількох елементів на одній формі.
Скажіть, ваша кнопка називається MyButton.
Підказка автоматично з’явиться, коли курсор наводить на кнопку, але якщо вам потрібно її відобразити програмно, зателефонуйте
MyToolTip.Show("Tooltip text goes here", MyButton)
у вашому коді, щоб показати підказку, і MyToolTip.Hide (MyButton), щоб знов зникнути.
Використання дизайнера форм:
Ви також можете встановити підказку інструмента програмно за допомогою наступного дзвінка:
this.toolTip1.SetToolTip(this.targetControl, "My Tool Tip");
Ви можете використовувати клас ToolTip:
Створення підказки для керування
Приклад:
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");
Для типової підказки це можна використовувати -
System.Windows.Forms.ToolTip ToolTip1 = new System.Windows.Forms.ToolTip();
ToolTip1.SetToolTip(this.textBox1, "Hello world");
Налаштована підказка також може бути використана у випадку, якщо для повідомлення підказки потрібне форматування. Це можна створити за допомогою спеціального форматування форми та використання її як діалогового вікна підказки у випадку наведення курсору миші. Будь ласка, перегляньте наступне посилання для більш детальної інформації -
http://newapputil.blogspot.in/2015/08/create-custom-tooltip-dialog-from-form.html
Ледаче та компактне зберігання тексту у властивості Tag
Якщо ви трохи ледачий і не використовуєте властивість Tag елементів управління ні для чого іншого, ви можете використовувати його для зберігання тексту підказки та призначення обробників подій MouseHover для всіх таких елементів керування за один раз таким чином:
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());
});
}
}
}
У цьому випадку всім кнопкам, що мають рядок у властивості Tag , присвоюється подія MouseHover . Щоб він був компактним, подія MouseHover визначається вбудованим, використовуючи лямбда-вираз. У випадку, якщо будь-яка кнопка буде накладена, текст тексту буде присвоєно підказці та буде показано.
Рамка .NET забезпечує клас ToolTip. Додайте один із них до своєї форми, а потім у події MouseHover для кожного елемента, до якого ви хочете підказку, зробіть щось на зразок наступного:
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 я створив розширення управління:
public static void SetToolTip(this Control control, string txt)
{
new ToolTip().SetToolTip(control, txt);
}
Тоді ви можете встановити підказку для будь-якого управління одним рядком:
this.MyButton.SetToolTip("Hello world");
Звичайно, просто обробіть подію на миші та скажіть, щоб вона відображала підказку інструменту. t - підказка, визначена або в глобальній галузі, або в конструкторі, використовуючи:
ToolTip t = new ToolTip();
то обробник події:
private void control_MouseHover(object sender, EventArgs e)
{
t.Show("Text", (Control)sender);
}