Как гарантировать, что NotifyIcon исчезнет? - PullRequest
7 голосов
/ 05 марта 2009

Я использую элемент управления NotifyIcon в одной из моих дочерних (модальных) форм, и он работает нормально. Показывать подсказки, как ожидалось, обрабатывать события мыши и т. Д. Однако это не исчезает, когда я этого ожидаю. В частности, когда я выхожу из дочерней формы, а родитель снова становится под контролем, значок все еще остается. Его всплывающая подсказка доступна, поэтому она как бы «живая».

Когда я затем выхожу из приложения в целом, изображение остается до тех пор, пока я не наведу курсор на него. Раз мусс он исчезает.

Как мне заставить его вести себя нормально? Хорошо, обычно это плохое слово: -0 Как я могу заставить его исчезнуть, когда исчезла создавшая его форма?

Может ли кто-нибудь объяснить, что также является причиной этого, я думал, .net должен был очистить после себя?

G

РЕДАКТИРОВАТЬ: Если я вызываю метод Dispose в закрытой форме, это работает, но действительно ли я должен это делать? G

Ответы [ 3 ]

5 голосов
/ 05 марта 2009
Icon.Visible = false

также будет работать. В любом случае, Dispose все еще должен вызываться для удаления дескриптора Windows.

5 голосов
/ 05 марта 2009

Вот мысль, не уверен, будет ли это иметь значение, но вы вызываете Dispose () на NotifyIcon, когда дочерняя форма закрывается?

РЕДАКТИРОВАТЬ: Только что видел ваши изменения, да, я не удивлен, что это помогает, и да, вы должны это сделать. Под прикрытиями что-то использует неуправляемый ресурс, и вам нужно его выпустить. Как правило, все в вашем приложении, которое реализует IDisposable, которое вы используете, сделайте себе одолжение и избавьтесь от него.

1 голос
/ 24 ноября 2010

Этот вопрос похож.

Если вы в порядке с новыми экземплярами программы, очищающими системный трей, вместо того, чтобы пытаться гарантировать очистку при любом виде выключения, после имитирует очистку лотка уведомлений. Он использует решение SendMessage, которое имитирует очистку при наведении мыши, при которой не требуется фактически перемещать курсор пользователя.

Обратите внимание, что на компьютерах с Windows 7 имя Notification Area должно быть заменено на User Promoted Notification Area.

...