2013-04-22 9 views
6

moja aplikacja jest do rozmów i myślę, jeśli ktoś potrzebuje, aby ukryć to szybko, ale nie chce, aby ją zamknąć, wpadłem na to:zminimalizować do zasobnika

private void button6_Click(object sender, EventArgs e) 
{ 
    this.WindowState = FormWindowState.Minimized; 
} 

jednak zamiast iść do paska zadań, i ma się pojawić okienko (nie) na tacy, tylko ikonę aplikacji i gdy ktoś kliknie go potrzebuje, aby ustawić ten

this.WindowState = FormWindowState.Normal; 

Czy to możliwe, w jaki sposób?

także zasobniku systemowym mam na myśli to, w prawym dolnym rogu, obok czasu

nadal nie mogę uzyskać to do pracy, nic w pasku powiadomień pojawia się, gdy robię to, co wy powiedział (btw: jest to pełny kod minimalizujący)

private void button6_Click(object sender, EventArgs e) 
{ 
    this.WindowState = FormWindowState.Minimized; 


} 

private void Form_Resize(object sender, EventArgs e) 
{ 
    if (WindowState == FormWindowState.Minimized) 
    { 
     this.Hide(); 
    } 


} 

private void notifyIcon_Click(object sender, EventArgs e) 
{ 
    this.Show(); 
    this.WindowState = FormWindowState.Normal; 
} 

Dlaczego to nie działa?

+1

Nie ma czegoś takiego jak "zasobniku systemowym". Nazywa się to "obszarem powiadomień". To powinno ci pomóc znaleźć właściwy komponent do wdrożenia tego, 'NotifyIcon'. –

Odpowiedz

7

Obsługa zdarzenia Resize formularza. W tej procedurze zastępujesz podstawową funkcjonalność zdarzenia Resize, aby zminimalizować formularz do na pasku zadań, a nie na pasku zadań. Można to zrobić wykonując podążając obsługi zdarzeń zmienić rozmiar formularza:

  1. Sprawdź, czy właściwość WindowState formie jest ustawiony na FormWindowState.Minimized. Jeśli tak, ukryj formularz, włącz obiekt NotifyIcon i pokaż końcówkę dymka, która pokazuje niektóre informacje.
  2. Gdy WindowState zmieni się w FormWindowState.Normal, wyłącz obiekt NotifyIcon, ustawiając jego właściwość Visible na false.
  3. Teraz chcesz, aby okno pojawiło się ponownie po dwukrotnym kliknięciu obiektu NotifyIcon na pasku zadań. W tym celu należy obsługiwać zdarzenie NotifyIcon o numerze MouseDoubleClick. Tutaj pokazujesz formularz za pomocą metody Show().

W przypadku zmiany rozmiaru forma, czy czek tam i ukryć formularz

private void Form_Resize(object sender, EventArgs e) 
    { 
     if (WindowState == FormWindowState.Minimized) 
     { 
      this.Hide(); 
     } 
    } 

Następnie po kliknięciu na ikonę na pasku zadań po prostu przywrócić go.

private void notifyIcon_Click(object sender, EventArgs e) 
{ 
    this.Show(); 
    this.WindowState = FormWindowState.Normal; 
} 

Patrz:
How do I minimize a WinForms application to the notification area?
minimize app to system tray

+0

SO powinna mieć również opcję oznaczania duplikatów odpowiedzi! http://stackoverflow.com/a/6317078/762730 – Sandeep

+0

@Sandep: chce ukryć wyskakujące okienko również nie dokładnie to samo pytanie, w przeciwnym razie zawsze chętnie wykonam tę pracę zamiast pisać tutaj .. dzięki za Twoją sugestię. –

+0

ok Muszę czegoś brakować, nie wiem co to jest, więc jeśli mógłbyś przeliterować to w pełni dla mnie, bo jestem głupi, jaki jest pełny kod, który włożyłem, również chcę dostać aplikację do komunikaty pojawiają się na pierwszym pasku i nie chcę mieć wyskakującego okienka ani ukrywać wyskakującego okienka – Connor

5

Użyj następującego kodu:

if (WindowState == FormWindowState.Minimized) 
     { 
      this.Hide(); 
     } 

Kiedy zminimalizować formularza, po prostu ukryć. Będziesz musiał zaimplementować powyższy kod w wydarzeniu Form_Resize.

Następnie kliknąć na ikonę na pasku zadań tylko przywrócić swój stan w sposób następujący:

private void notifyIcon_Click(object sender, EventArgs e) 
    { 
     this.Show(); 
     this.WindowState = FormWindowState.Normal; 
    } 

Trzeba będzie użyć notifyIcon_Click zdarzenie do tego celu.

Mam nadzieję, że to się przyda.

Powiązane problemy