2013-11-27 4 views
0

Я планирую использовать этот метод, чтобы отобразить уведомит значок, чтобы он мог получить доступ между основной формой и дочерними формами (найденной из другого SO post)Используйте NotifyIcon между двумя формами в C#

public partial class MainForm : Form { 
    public MainForm() { 
     InitializeComponent(); 
     notifier = this.notifyIcon1; 
     this.FormClosed += delegate { notifier = null; }; 
    } 

    public static NotifyIcon Notifier { get { return notifier; } } 

    private static NotifyIcon notifier; 
} 
  1. ли необходимо добавить делегат FormClosed? Я бы подумал, что когда все остальное уничтожается и освобождается?

Edit: Для уточнения - я могу подтвердить, что с помощью кода без делегата выше, когда я закрыть форму иконка в системном лотке исчезнет, ​​и я действительно использовал VS UI перетащить/падение NotifyIcon из панели инструментов поэтому дизайнер обрабатывает инициализацию для меня, и я использую конструктор, как показано выше, для доступа к нему.

ответ

1

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

Я бы подумал, что когда все остальное уничтожается и освобождается?

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

Конечно, если это основная форма (а не неправильное обозначение), то вся заявка закончится при закрытии формы, которая будет очищать все, независимо от того, статична или нет.

0

Вы должны установить

nutifier.Visible = false; 
notifier = null; 

на закрытии. Если нет, значок остается после закрытия приложения.

+0

Я тестировал, и когда основная форма закрывается, значок в трее исчезает – Kairan

 Смежные вопросы

  • Нет связанных вопросов^_^