Запуск приложения в области уведомлений. Элемент управления NotifyIcon
Некоторые программы, такие как словари и антивирусы, при запуске остаются в области уведомлений панели задач, откуда их можно развернуть, дважды щелкнув на иконке приложения (рис. 3.17):
Рис. 3.17. Приложения в области уведомления
Создайте новое приложение и назовите его SystemTray. Перетаскиваем на форму из окна ToolBox элементы управления ContextMenu и NotifyIcon. Элемент управления NotifyIcon и представляет собой отображение запущенного приложения в области задач. Добавляем пункты контекстного меню и устанавливаем следующие свойства элемента NotifyIcon:
свойство Name | Text |
mnuShow | Показать |
mnuHide | Скрыть |
СontextMenu | contextMenu1 |
Icon | Code\Glava3\SystemTray\Icon\ eventlogWarn.ico |
Text | Область уведомлений |
Изображение, используемое в качестве иконки (свойство Icon) элемента NotifyIcon, будет выводиться в область уведомлений. Значение свойства Text представляет собой текст всплывающей подсказки, появляющейся при наведении курсора на иконку приложения. Добавляем обработчик пункта меню mnuShow:
private void mnuShow_Click(object sender, System.EventArgs e) { //Включаем отображения приложения на панели задач при запуске this.ShowInTaskbar = true; //Показываем форму this.Show(); //Отключаем доступность пункта меню mnuShow mnuShow.Enabled = false; //Включаем доступность пункта меню mnuHide mnuHide.Enabled = true; //Переменной Hidden устанавливаем значение false
}
Обработчик пункта меню mnuHide изменяет эти значения на обратные:
private void mnuHide_Click(object sender, System.EventArgs e) { this.ShowInTaskbar = false; this.Hide(); mnuShow.Enabled = true; mnuHide.Enabled = false;
}
В конструкторе формы скрываем видимость приложения на панели задач при запуске:
public Form1() { InitializeComponent(); this.ShowInTaskbar = false; }
Переключаемся в режим дизайна, в окне Properties элемента управления NotifyIcon переключаемся на события и дважды щелкаем в поле события DoubleClick:
private void notifyIcon1_DoubleClick(object sender, System.EventArgs e) { mnuShow_Click(this, new EventArgs()); }