Работа с треем. Сворачивание формы в трей на C#

{lang: 'ru'}

Этот пост открывает серию статей, посвященных работе с треем. Описывать все в одном посте я не буду по одной причине: некоторые аспекты теряются за другими. Сначала я действительно написал статью под заголовком «Как реализовать сворачивание в трей на C#», однако по запросу «сворачивание в трей» на нее пришел только один человек. Остальные же искали нечто другое, не указанное в заголовке статьи, однако, естественно, затронутое в ней. И я не уверен, что, посмотрев на заголовок, они тут же не закрыли вкладку. Не все же будут лезть в конец страницы, если не уверены, что там будет ответ. Я и сам не всегда проверяю, где же на странице находится то, что по мнению поисковика я искал. В конечном итоге написание серии относительно коротких постов должно привести к двум приятностям: повышению релевантности страниц и более удобному поиску материала (это уже для меня лично, чтобы не забыть что и где).

Итак. За работу с областью уведомлений (или треем) в С# отвечает класс NotifyIcon. В нем есть несколько полезных свойств, которые позволяют:

  • назначить значок (свойство Icon);
  • указать контекстное меню для значка (свойство ContextMenu);
  • определить тест-подсказку (свойство Text);
  • свойство Visible позволяет скрыть значок в трее.

Перед использованием его естественно следует «кинуть» на форму в визуальном редакторе или объявить в ручную.

Здесь представлен фрагмент кода небольшой программы, демонстрирующий реализацию сворачивания формы в трей:

Надеюсь, что комментарии в коде объясняют все нюансы программы.


Она делает всего две вещи:

  • сворачивается и разворачивается из трея по щелчку левой кнопки мыши на значке в области уведомлений;
  • запоминает свое старое состояние и разворачивается сразу в него (т.е. если она была развернута на весь экран, а потом свернута в трей, то восстановится она снова на весь экран).

И, напоследок, архив с этим проектом.


Полезная статья? Их будет больше, если вы поддержите меня!


  • Павел

    Дочернюю(открытую из другой формы) так свернуть нельзя

  • Goga

    Павел, идея сворачивания в трей состоит в том, что сворачивается всё приложение, а не так, что одна форма свернулась, а другая нет. Глупость сказали.

  • SkyDancer

    Спасибо. Очень полезная информация.

  • andre

    в нескольких статьях — ссылки на файлы битые. сделайте, что нибудь.

    • lexpenz

      andre, ссылки поправил, теперь должно скачиваться нормально. Проверьте.

      • Доброго, как сделать чтобы сразу при запуске форма не была видна, я делал как то на одной программе, но разбирая ее у меня не получается спрятать форму в новой программе

  • Добавочный вопрос, все сделал как надо, но при нажатии на иконку в трее программа автоматически закрывается и все, хотя должна показать контексное меню.