Как сделать 2 тултипа при наведении на одну кнопку?
Я хочу сделать всплывающее окно при наведении на кнопку одну и ту же.Одна и та же кнопка выполняет действие восстановления(увеличение) формы и развертывании(уменьшении)формы и хотел бы реализовать 2 всплывающих окна при разных действиях той же кнопки, но не вышло. Вот мой код:
private void Form2_Load(object sender, EventArgs e)
{
Get_Table("ID_route as 'id маршрута', Route_number as 'номер маршрута',destination as 'пункт назначения',Cost_destination as 'стоимость за проезд',district as 'район'," +
"Sending_time as 'Время отправки' From auto.route", 1);
Get_Table("id_Ticket as 'id билета', Place as 'Место', Name as 'ФИО пассажира', passport as 'пасспорт' From auto.ticket", 2);
Get_Table("id_driver as 'id водителя', Nname as 'ФИО водителя', Birthday as 'Дата рождения', Passport as 'Пасспорт' From auto.driver", 3);
Get_Table("id_Bus as 'id автобуса', number as 'Номер', Model as 'Модель', License_plate_number as 'Номерной знак'," +
"number_of_seats as 'Количество мест' From auto.bus", 4);
Get_Table("id_Dispatcher as 'id диспетчера', Name as 'ФИО диспетчера',Birthday as 'Дата рождения',Address as 'Адрес' From auto.dispatcher", 5);
textBox1.Text = "0";
comboBox1.SelectedIndex = 0;
comboBox2.SelectedIndex = 0;
ToolTip t = new ToolTip();
t.SetToolTip(button3, "Выберите строки из таблиц для создания записи билета!!!");
ToolTip t5 = new ToolTip();
t5.SetToolTip(button6, "Закрыть форму");
ToolTip t6 = new ToolTip();
if (this.WindowState == FormWindowState.Normal)
{
t6.SetToolTip(button5, "Развернуть форму");
}
else if (this.WindowState == FormWindowState.Maximized)
{
t6.SetToolTip(button5, "Вернуть форму");
}
ToolTip t7 = new ToolTip();
t7.SetToolTip(button7, "Свернуть форму");
}
вот и код в котором я делаю восстановление и развертывании формы:
private void button5_Click(object sender, EventArgs e)
{
if (this.WindowState == FormWindowState.Normal)
{
this.WindowState = FormWindowState.Maximized;
}
else
{
this.WindowState = FormWindowState.Normal;
}
}
Ответы (1 шт):
Обновлять текст на тултипе надо после каждого изменения состояния формы, а не один раз.
private ToolTip windowStateTooltip = new ToolTip();
private void Form2_Load(object sender, EventArgs e)
{
// ... ваш остальной код
new ToolTip().SetToolTip(button3, "Выберите строки из таблиц для создания записи билета!!!");
new ToolTip().SetToolTip(button6, "Закрыть");
new ToolTip().SetToolTip(button7, "Свернуть");
UpdateWindowStateTooltip();
}
private void UpdateWindowStateTooltip()
{
windowStateTooltip.SetToolTip(button5, WindowState == FormWindowState.Normal ? "Развернуть" : "Восстановить");
}
private void button5_Click(object sender, EventArgs e)
{
WindowState = WindowState == FormWindowState.Normal ? FormWindowState.Maximized : FormWindowState.Normal;
UpdateWindowStateTooltip();
}
Еще не называйте окно "формой", ну потому что оно окно. "Форма" - это термин Winforms.
Еще обратите внимание на то что состоянием окна можно управлять не только через ваши кнопки. Например можно через контекстное меню панели задач (Shift+Правый клик по иконке открытого приложения).
Поэтому лучше сделать так.
private ToolTip windowStateTooltip = new ToolTip();
private FormWindowState LastWindowState;
private void Form2_Load(object sender, EventArgs e)
{
// ... ваш остальной код
new ToolTip().SetToolTip(button3, "Выберите строки из таблиц для создания записи билета!!!");
new ToolTip().SetToolTip(button6, "Закрыть");
new ToolTip().SetToolTip(button7, "Свернуть");
UpdateWindowStateTooltip();
}
private void UpdateWindowStateTooltip()
{
windowStateTooltip.SetToolTip(button5, WindowState == FormWindowState.Normal ? "Развернуть" : "Восстановить");
}
protected override void OnClientSizeChanged(EventArgs e)
{
if (WindowState != LastWindowState)
{
LastWindowState = WindowState;
UpdateWindowStateTooltip();
}
base.OnClientSizeChanged(e);
}
private void button5_Click(object sender, EventArgs e)
{
WindowState = WindowState == FormWindowState.Normal ? FormWindowState.Maximized : FormWindowState.Normal;
}