2012-04-19 4 views
19

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

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

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

ответ

46

Example in MSDN forum

Вот краткий пример, чтобы показать, как минимизировать в область уведомлений. Вам нужно добавить ссылки на сборки 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); 
    } 
} 
+0

Итак, у меня есть значок под названием «Main.ico» в моем ApplicationDirectory? –

+0

LeGrandMere - спасибо за отличное исправление succint. Felix D: вы можете добавить иконку, используя: var iconStream = Application.GetResourceStream (новый Uri ("pack: // application: ,,, LaunchPad.UI; component/Images/Launch.ico")) ?. Stream; затем do var ni = new NotifyIcon { Значок = новая Значок (iconStream), Видимый = true }; – yonsk

9

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

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

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

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

5

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

enter image description here

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

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

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

enter image description here

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

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

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

enter image description here

Вот Whe повторно связывание ContextMenuStrip к NotifyIcon:

enter image description here

Удачи!

+0

Мне кажется, что вы описываете Windows Forms вместо WPF. –

 Смежные вопросы

  • Нет связанных вопросов^_^