Вопрос

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

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

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

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

G

Редактировать: Если я вызываю метод Dispose в закрытой форме, это никогда не сработает, но действительно ли я должен это делать?G

Это было полезно?

Решение

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

Редактировать:Только что увидел вашу правку, да, я не удивлен, что это помогает, и да, вы должны это сделать.Под прикрытием что-то использует какие-то неуправляемые ресурсы, и вам нужно освободить это.Как правило, все, что в вашем приложении, реализующем IDisposable, которое вы используете, сделайте себе одолжение и утилизируйте.

Другие советы

Icon.Visible = false

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top