2012-04-19 12 views
19

Tworzę nową aplikację WPF i muszę być w stanie zminimalizować aplikację i mieć ładną i przytulną w zasobniku systemowym, tuż obok zegar (lub w tym obszarze ogólnym).Najprostszy sposób zminimalizowania programu do zasobnika systemowego przy użyciu .NET 4

To musi działać w systemach Windows XP, Vista i 7. Nie muszę obsługiwać starszych wersji systemu Windows.

Jaki jest najprostszy sposób, aby to osiągnąć, jeśli korzystam z .NET 4?

Odpowiedz

46

Example in MSDN forum

Oto krótki przykład, aby pokazać, jak zminimalizować do obszaru powiadomień. Należy dodać odwołania do zestawów System.Window.Forms i 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

Czy muszę mieć ikonę o nazwie "Main.ico" w moim ApplicationDirectory? –

+0

LeGrandMere - dzięki za doskonałe rozwiązanie problemu. Felix D: Możesz dodać ikonę używając: var iconStream = Application.GetResourceStream (new Uri ("pack: // application: ,,,/LaunchPad.UI; component/Images/Launch.ico")). Stream; następnie wykonaj var ni = nowy NotifyIcon { Ikona = nowa ikona (iconStream), Visible = true }; – yonsk

9

Odniosłem sukces, korzystając z tej bezpłatnej implementacji ikony powiadomień w WPF.

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

Jest to dość prosty w konfiguracji i kod źródłowy jest przewidziane. Nie opiera się na Windows Forms, więc jest "czystym" WPF i bardzo konfigurowalny.

Możesz znaleźć samouczek, jak go używać na CodeProject.

5

Dodaj notifyIcon do aplikacji z przybornika.
Wybierz swój główny form >> przejdź do ikony >> wybierz Events >> pod FromClosing event wpisz MainForm_FormClosing >> naciśnij enter.

enter image description here

W otwartym .cs pliku wprowadź następujące działania zdarzeń:

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

Teraz głównym oknie formularz zostanie zminimalizowany do zasobnika systemowego po kliknięciu na przycisk X. Kolejnym krokiem jest przywrócenie normalnego stanu formularza.
Przejdź do numeru Properties swojego notifyIcon >> znajdź DoubleClick event >> typ NotifyIcon_DoubleClick i naciśnij klawisz Enter, aby utworzyć funkcję zdarzeń dla Ciebie.

enter image description here

Umieść ten kod na swojej imprezy:

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

Teraz, jeśli chcesz, aby zawiadomić ikonę w ozdobnym stylu można dodać menu kontekstowe i powiązać go z Notify icon , więc masz coś takiego:

enter image description here

Oto trakt re połączyć ContextMenuStrip do NotifyIcon:

enter image description here

Powodzenia!

+0

Wydaje mi się, że opisujesz Windows Forms zamiast WPF. –

Powiązane problemy