C#: Сворачивание программы в трей

Сегодня рассмотрим немаловажную функцию многих программ — сворачивание в трей (для тех кто не знает это область где находятся системные часы, регулятор громкости и т.п.). Вещь это порой очень полезная, а главное удобная. Не будем тянуть время и перейдем к сути вопроса…


Создадим новый Windows Form Application и из панели ToolBox перетащим в наш проект элемент NotifyIcon. Имя по умолчанию для данного элемента «notifyIcon1», что определенно неудобно, поэтому переименуем его в «Tray».

Из свойств нашего элемента «Tray» в первую очередь обратим внимание на следующие:

Icon - Иконка нашего значка;
Text - Текст, который будет отображаться,
       если навести курсором на значок в трее;
Visible - Отображается ли значок в трее или нет;

Теперь щелкнем на элементе «Tray» два раза. В коде проекта создастся обработчик события двойного клика по значку в трее. Здесь нам необходимо написать код, который будет показывать нашу форму, если она находилась в свернутом виде:

private void Tray_MouseDoubleClick(object sender, MouseEventArgs e)
{
   if (this.WindowState == FormWindowState.Minimized) {
    this.Visible = true;
    this.ShowInTaskbar = true;
    this.WindowState = FormWindowState.Normal;
   }
}

Так же нам необходимо перегрузить метод сварачивания нашей формы. Для этого укажем ключевое слово «ovveride«, нажмем пробел, и из списка выберем метод «OnResize«. В данном методе напишем:

protected override void OnResize(EventArgs e)
{
   if (this.WindowState == FormWindowState.Minimized)
   {
     this.ShowInTaskbar = false;
     this.Visible = false;
   }
}

Все! Дело сделано! Теперь при сворачивании приложения, оно полностью исчезнет с экрана и останется лишь в трее. При двойном клике на значок в трее мы снова увидим нашу форму.

Запись опубликована в рубрике C# с метками , , . Добавьте в закладки постоянную ссылку.