2013-12-16 14 views
5

Używamy NotifyIcon, aby ostrzec użytkownika, gdy otrzyma nową wiadomość, która wymaga jego uwagi. Jeśli wcześniej ktoś dostanie się do wiadomości, ikona powiadomień powinna ponownie zostać ukryta, jednak mam problem z ustaleniem, w jaki sposób zamknąć balon z kodu.Jak mogę zamknąć NotifyIcon BallonToolTip z kodu?

Mój kod wygląda mniej więcej tak:

myNotifyIcon.ShowBalloonTip(2000, title, message, icon); 

Próbowałem znaleźć here propozycje, ale żadna nadają.

  • Korzystanie myNotifyIcon.Visible = true nie ukrywa go

  • Korzystanie myNotifyIcon.Visible = false; myNotifyIcon.Visible = true; będzie to ukryć, ale też ukrywa ikonę w zasobniku i gdy wykaże się ponownie, to pokazuje się na inną lokalizację.

  • myNotifyIcon.Show(0) nie jest poprawnym sposobem

  • myNotifyIcon.ShowBalloonTip(0) lub myNotifyIcon.ShowBalloonTip(1) nie wydaje się działać jak tylko balon zostanie pokazany i nie wydaje się, aby odejść na własną rękę w ogóle.

czytam this question o użyciu WinAPI znaleźć okno i wysłać mu wiadomość WM_CLOSE, ale nie jestem zbyt pewien, jak to zrobić w sposób wiarygodny.

Jak mogę zamknąć kod NotifyIcon?

+0

OMG Rachel, robisz rzeczy z WinForm? –

+0

Czy próbowałeś notifyIcon.Icon = null; – techno

+1

Nie jest obsługiwana przez natywną funkcję winapi. Rozwiązaniem jest obejście produktu NotifyIcon. –

Odpowiedz

1

Nigdy nie znalazłem nie-hacky sposób to zrobić. Dokumentacja mówi:

Minimalne i maksymalne wartości limitu czasu są wymuszane przez system operacyjnego i są zazwyczaj 10 i 30 sekund, odpowiednio, jednak mogą się różnić w zależności od systemu operacyjnego. Wartości limitu czasu, które są zbyt duże lub zbyt małe, są dostosowywane do odpowiedniej wartości minimalnej lub .

Mimo to nie konkretnie odpowiedzieć na pytanie jawnie zamykając balon, oznacza to, że osoby dzwoniące do mnie metody ShowBalloonTip() po prostu nie mają pełną kontrolę nad balonem, po to zostało pokazane.

Najlepszym rozwiązaniem znalazłem to jeden już wspomniano:

myNotifyIcon.Visible = false; 
myNotifyIcon.Visible = true; 

Nie idealne, ale to działa. Innym pomysłem byłoby zmienić komunikat wyświetlany w dymku, aby wskazać, że poprzedni komunikat jest przestarzały:

myNotifyIcon.ShowBalloonTip(2000, "Title", "Never mind!", ToolTipIcon.Info); 
0

Istnieje prosty sposób aby to zrobić.

myNotifyIcon.ShowBalloonTip(2000); 
myNotifyIcon.visible = true; 
this.Hide(); 

Spróbuj tego, na pewno zadziała w 100%.

Powiązane problemy