Самый простой способ минимизировать программу в системном трее using.NET 4
Я делаю новое приложение WPF, и мне нужно иметь возможность минимизировать приложение и иметь хороший и уютный в системном трее, прямо рядом с часами (или в этой общей области).
Это должно работать на Windows XP, Vista и 7. Мне не нужно поддерживать более старые версии Windows.
каков самый простой способ достичь этого, если я использую .NET 4?
3 ответов
вот краткий пример, чтобы показать, как минимизировать область уведомлений. Вам нужно добавить ссылки на систему.Окно.Формы и система.Чертеж сборки.
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);
}
}
У меня был успех, используя эту бесплатную реализацию notify-icon в WPF.
http://www.hardcodet.net/projects/wpf-notifyicon
Это довольно просто настроить, и исходный код предоставляется. Он не полагается на Windows Forms, поэтому он "чистый" WPF и очень настраиваемый.
вы можете найти учебник о том, как использовать его на CodeProject.
добавить notifyIcon
в ваше приложение из Toolbox.
Выберите главная 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;
}
теперь ваше главное окно формы будет свернуто в системный трей при нажатии на кнопку X. Следующий шаг - вернуть форму в нормальное состояние.
Иди в Properties
of ваш notifyIcon
>> найти DoubleClick event
>> типа NotifyIcon_DoubleClick
и нажмите enter, чтобы получить функцию события, созданную для вас.
поместите этот код на свое мероприятие:
private void NotifyIcon_DoubleClick(object sender, EventArgs e)
{
this.Show();
notifyIcon.Visible = false;
}
теперь, если вы хотите сделать значок уведомления в причудливом стиле вы можете добавить контекстное меню и связать его с вашим значок уведомления, так что вы получите что-то вроде этого:
вот где вы связываете contextMenuStrip для уведомления:
удачи!