Прячем программу в трей на C#

Программирование на C# 29 августа 2012 г., 7:35

Всем привет, сегодня учимся сворачивать в трей программу написанную в 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;
        }



Станьте первым!

Пожалуйста, авторизуйтесь или зарегистрируйтесь для комментирования!

Яндекс.Метрика