Как свернуть приложение в трей панели задач в WinForms

Иконка Трей

Панель задач Windows — очень удобная и полезная особенность этой системы. Еще лучше ее делает трей — место куда сворачиваются приложения, работающие в фоне. В этой статье я расскажу как свернуть приложение WinForms в трей, а также, как фоновому приложению дать о себе знать с помощью всплывающих подсказок.

Делается эта нехитрая задача с помощью объекта NotifyIcon:

Объект NotifyIcon на панели инструметов  Как свернуть приложение в трей панели задач в WinForms

Как и большинство объектов в .NET, этот был разработан что бы сделать жизнь программиста проще. Именно с помощью этого контрола мы установим иконку приложения в трее а также будем выводить всплывающие подсказки.

Добавляем объект NotifyIcon на свою форму. Он имеет следующий набор свойств:

Свойства объекта NotifyIcon  Как свернуть приложение в трей панели задач в WinForms

Обязательно указываем иконку которая будет отображаться в трее (свойство Icon). Если не сделать этого, то ничего не появиться в трее при сворачивании приложения.

Далее мы хотим что бы при нажатии кнопки окна Свернуть (Minimize), программа убиралась в трей:

Кнопка Свернуть (Minimize) окна  Как свернуть приложение в трей панели задач в WinForms

Для этого добавляем следующий обработчик события Resize формы:

private void Form1_Resize(object sender, EventArgs e)
{
    if (WindowState == FormWindowState.Minimized)
        Hide();
}

В этом элементарном кусочке кода при изменении размера формы, мы проверяем не было ли изменено ее состояние в «Минимизированная» (Minimized), и если да, то просто прячем программу методом Hide(). Если сейчас запустить наше приложение и нажать кнопку Свернуть, то получим такой результат:

Приложение свернутое в трей  Как свернуть приложение в трей панели задач в WinForms

Теперь еще не мешало бы прописать логику «разворачивания» приложения из трея при двойном щелчке мышью по иконке. Для этого воспользуемся событием 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 секунд:

Всплывающая подсказка выведенная с помощью объекта NotifyIcon  Как свернуть приложение в трей панели задач в WinForms

Итак, очень простым способом, описанным в этой заметке, мы можем добиться сворачивания приложения в трей а также вывода всплывающих подсказок. Надеюсь данный материал будет вам полезен.

Исходники простого приложения разработанного в этой статье качаем тут.

8 комментариев

  1. Yuuko Amamiya:

    Благодарю. Вы мне очень помогли.

  2. Спасибо большое ! только на этом сайте нашел что искал, все понятно и нормально работает

  3. Дмитрий:

    Спасибо, очень доходчиво!

  4. Павел:

    Сапсибо большое. Всё кратко, но при этом легко и понятно. Пишите ещё! :)

  5. MSgold:

    Наконец!!!!

  6. Дайроне:

    Спасибо, очень помогло)

  7. Марат:

    Спасибо! оочень помогли ! Всё понятно и просто.

  8. Delamus:

    Спасибо большое, всё просто и понятно.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>