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

Опубликовано Опубликовано в рубрике Разное

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

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

Ob'ekt-NotifyIcon-na-paneli-instrumetov

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

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

Svoystva-ob'ekta-NotifyIcon

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

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

Knopka-Svernut-Minimize-okna

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

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

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

Prilozhenie-svernutoe-v-trey

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

Vsplyivayushhaya-podskazka-vyivedennaya-s-pomoshhyu-ob'ekta-NotifyIcon

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

Оригинал: http://devnuances.com/