Самый простой способ заставить программу сворачивать себя в системный трей с помощью.NET 4
Я делаю новое приложение WPF, и мне нужно иметь возможность свести к минимуму приложение и иметь хороший и аккуратный в системном трее, рядом с часами (или в этой общей области).
Это должно работать на Windows XP, Vista и 7. Мне не нужно поддерживать старые версии Windows.
Какой самый простой способ добиться этого, если я использую.NET 4?
3 ответа
Вот быстрый пример, чтобы показать, как свернуть область уведомлений. Вам нужно добавить ссылки на 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:
Удачи!