Панель задач Windows — очень удобная и полезная особенность этой системы. Еще лучше ее делает трей — место куда сворачиваются приложения, работающие в фоне. В этой статье я расскажу как свернуть приложение WinForms в трей, а также, как фоновому приложению дать о себе знать с помощью всплывающих подсказок.
Делается эта нехитрая задача с помощью объекта NotifyIcon
:
Как и большинство объектов в .NET, этот был разработан что бы сделать жизнь программиста проще. Именно с помощью этого контрола мы установим иконку приложения в трее а также будем выводить всплывающие подсказки.
Добавляем объект NotifyIcon
на свою форму. Он имеет следующий набор свойств:
Обязательно указываем иконку которая будет отображаться в трее (свойство Icon
). Если не сделать этого, то ничего не появиться в трее при сворачивании приложения.
Далее мы хотим что бы при нажатии кнопки окна Свернуть (Minimize), программа убиралась в трей:
Для этого добавляем следующий обработчик события Resize
формы:
private void Form1_Resize(object sender, EventArgs e) { if (WindowState == FormWindowState.Minimized) Hide(); }
В этом элементарном кусочке кода при изменении размера формы, мы проверяем не было ли изменено ее состояние в «Минимизированная» (Minimized), и если да, то просто прячем программу методом Hide()
. Если сейчас запустить наше приложение и нажать кнопку Свернуть, то получим такой результат:
Теперь еще не мешало бы прописать логику «разворачивания» приложения из трея при двойном щелчке мышью по иконке. Для этого воспользуемся событием DoubleClick
класса NotifyIcon
, а именно, создадим следующий его обработчик:
private void notifyIcon1_DoubleClick(object sender, EventArgs e) { Show(); WindowState = FormWindowState.Normal; }
Все что мы делаем в этом обработчике, это показываем форму с помощью метода Show()
и возвращаем нормальное ( Normal
) состояние форме.
Как видите, все довольно просто и интуитивно. А теперь, как и обещал, покажу еще как приложение может напомнить о себе пользователю с помощью всплывающих подсказок.
Все что надо сделать, это установить заголовок такой подсказки ( BalloonTipTitle
), ее текст ( BalloonTipText
) и показать подсказку с помощью метода ShowBalloonTip()
:
private void Form1_Resize(object sender, EventArgs e) { if (WindowState == FormWindowState.Minimized) { Hide(); notifyIcon1.BalloonTipTitle = "Программа была спрятана"; notifyIcon1.BalloonTipText = "Обратите внимание что программа была спрятана в трей и продолжит свою работу."; notifyIcon1.ShowBalloonTip(5000); // Параметром указываем количество миллисекунд, которое будет показываться подсказка } }
Как видите, тут я расширил обработчик события Resize, в котором теперь не только сворачиваеться приложение, но и показывается подсказка об этом событии на протяжении 5 секунд:
Итак, очень простым способом, описанным в этой заметке, мы можем добиться сворачивания приложения в трей а также вывода всплывающих подсказок. Надеюсь данный материал будет вам полезен.
Оригинал: http://devnuances.com/