Самый простой способ заставить программу сворачивать себя в системный трей с помощью.NET 4

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

Это должно работать на Windows XP, Vista и 7. Мне не нужно поддерживать старые версии Windows.

Какой самый простой способ добиться этого, если я использую.NET 4?

3 ответа

Решение

Пример в форуме MSDN

Вот быстрый пример, чтобы показать, как свернуть область уведомлений. Вам нужно добавить ссылки на System.Window.Forms а также System.Drawing сборок.

public partial class Window1 : System.Windows.Window
{

    public Window1()
    {
        InitializeComponent();

        System.Windows.Forms.NotifyIcon ni = new System.Windows.Forms.NotifyIcon();
        ni.Icon = new System.Drawing.Icon("Main.ico");
        ni.Visible = true;
        ni.DoubleClick += 
            delegate(object sender, EventArgs args)
            {
                this.Show();
                this.WindowState = WindowState.Normal;
            };
    }

    protected override void OnStateChanged(EventArgs e)
    {
        if (WindowState == System.Windows.WindowState.Minimized)
            this.Hide();

        base.OnStateChanged(e);
    }
}

Я успешно использовал эту бесплатную реализацию значка уведомлений в WPF.

http://www.hardcodet.net/projects/wpf-notifyicon

Это довольно просто настроить, и исходный код предоставляется. Он не зависит от Windows Forms, поэтому это "чистый" WPF и очень настраиваемый.

Вы можете найти руководство по его использованию в CodeProject.
А вот и пакет Nuget

Добавлять notifyIcon в ваше приложение из панели инструментов.
Выберите свой основной form >> перейти к Properties >> выберите Events значок >> под FromClosing event тип MainForm_FormClosing >> нажмите ввод.

В открывшемся .cs В файл введите следующее действие события:

private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
{
     this.Hide();
     notifyIcon.Visible = true;
     ShowInTaskbar = false;
     e.Cancel = true;
}

Теперь ваше главное окно FORM будет свернуто в системный трей при нажатии кнопки X. Следующий шаг - вернуть ФОРМУ в нормальное состояние.
Перейти к Properties вашей notifyIcon >> найти DoubleClick event >> тип NotifyIcon_DoubleClick и нажмите Enter, чтобы получить функцию события, созданную для вас.

Поместите этот код в ваше мероприятие:

private void NotifyIcon_DoubleClick(object sender, EventArgs e)
{
    this.Show();
    notifyIcon.Visible = false;
}

Теперь, если вы хотите сделать значок уведомления в необычном стиле, вы можете добавить контекстное меню и связать его с вашим значком уведомления, чтобы вы получили что-то вроде этого:

Здесь вы связываете contextMenuStrip с NotifyIcon:

Удачи!

Другие вопросы по тегам