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