C # Как я могу назначить контекстное меню на иконке в трее, если иконка в трее не в той же форме? - PullRequest
0 голосов
/ 19 марта 2009

Я использовал приведенный ниже код, чтобы программно создать значок в системном трее, этот код находится в файле класса, а не в моей основной форме. Я перетащил элемент управления contextMenuStrip в основную форму, теперь мне нужно связать их, но в качестве элемента управления, если он закрыт, я его не вижу Каков наилучший способ связать эти два?

trayIcon = new NotifyIcon();
trayIcon.Icon = mainForm.Icon;
trayIcon.Text = "Test";
trayIcon.MouseDoubleClick += new MouseEventHandler(this.trayIcon_MouseDoubleClick);
trayIcon.ContextMenuStrip = //help needed here???

Спасибо всем

Ответы [ 3 ]

1 голос
/ 19 марта 2009

Вы можете установить свойство Modifiers для contextMenuStrip в public.

0 голосов
/ 19 марта 2009

Если вы беспокоитесь о том, чтобы сделать фактическое поле ContextMenuStrip общедоступным, почему бы не предоставить вместо этого не частное поле только для чтения. Это по-прежнему будет поддерживать уровень инкапсуляции в вашем основном объекте формы.

public class MainForm { ...
  public ContextmenuStrip MyMenuStrip { 
    get { return contextMenuStrip; }
  }
}

Тогда вы можете просто получить доступ к mainForm.MyMenuStrip для иконки в трее.

0 голосов
/ 19 марта 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...