Подтвердить что ты не робот

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

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

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

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

4b9b3361

Ответ 1

Пример в форуме 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);
    }
}

Ответ 2

У меня был успех с использованием этой бесплатной реализации значка уведомлений в WPF.

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

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

Вы можете найти учебник о том, как его использовать на CodeProject.

Ответ 3

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

введите описание изображения здесь

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

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

Теперь ваше основное окно FORM будет сведено к минимуму до системного трея, когда вы нажмете кнопку X. Следующий шаг - вернуть FORM в нормальное состояние.
Перейдите в Properties вашего notifyIcon → find DoubleClick event → type NotifyIcon_DoubleClick и нажмите enter, чтобы создать функцию события, созданную для вас.

введите описание изображения здесь

Поместите этот код в свое событие:

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

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

введите описание изображения здесь

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

введите описание изображения здесь

Удачи!