Прячем программу в трей на C#
Всем привет, сегодня учимся сворачивать в трей программу написанную в C#. Итак создаем новый проект «Приложение Windows Forms». Переходим в конструктор форм и жмем «панель инструментов». Ищем элемент «NotifyIcon»
и перетаскиваем его на нашу форму.
Как видите он появился с низу, и если по нему кликнуть снизу, откроются свойства.
В свойствах нас интересуют параметры: Text, Icon. В Text мы задаем тот текст, который будет показываться при наведении на иконку в трее, Icon — та самая иконка что будет показываться, поэтому обязательно сделайте (я делал в GIMP'е) или найдите в интернете.
Итак, теперь нам надо привязать к нашей форме код убирания окна в трей, показ нашей иконки и добавить разворачивание нашего окна. Кликните 2 раза по нашей форме, и мы перейдем из конструктора в класс нашей формочки.
Моя форма называется w1 и следовательно функция конструктора тоже называется w1, вот начала кода:
using System; using System.Windows.Forms; namespace FwLogger { public partial class w1 : Form { public w1() { InitializeComponent(); } } }
Далее в конструктор класса мы добавляем код и все связанные с ним функции, и вот у нас получается:
public w1() { InitializeComponent(); // делаем невидимой нашу иконку в трее notifyIcon1.Visible = false; // добавляем Эвент или событие по 2му клику мышки, //вызывая функцию notifyIcon1_MouseDoubleClick this.notifyIcon1.MouseDoubleClick += new MouseEventHandler(notifyIcon1_MouseDoubleClick); // добавляем событие на изменение окна this.Resize += new System.EventHandler(this.Form1_Resize); } private void Form1_Resize(object sender, EventArgs e) { // проверяем наше окно, и если оно было свернуто, делаем событие if (WindowState == FormWindowState.Minimized) { // прячем наше окно из панели this.ShowInTaskbar = false; // делаем нашу иконку в трее активной notifyIcon1.Visible = true; } } private void notifyIcon1_MouseDoubleClick(object sender, MouseEventArgs e) { // делаем нашу иконку скрытой notifyIcon1.Visible = false; // возвращаем отображение окна в панели this.ShowInTaskbar = true; //разворачиваем окно WindowState = FormWindowState.Normal; }
Станьте первым!