Практическое руководство. Связывание контекстного меню с компонентом NotifyIcon в Windows Forms

Замечание

Хотя MenuStrip и ContextMenuStrip заменяют и добавляют функциональные возможности элементам управления MainMenu и ContextMenu предыдущих версий, MainMenu и ContextMenu сохраняются как для обратной совместимости, так и для дальнейшего использования по вашему выбору.

Компонент NotifyIcon отображает значок в области уведомлений о состоянии панели задач. Как правило, приложения позволяют щелкнуть правой кнопкой мыши этот значок для отправки команд в приложение, которое он представляет. Связывая компонент ContextMenu с компонентом NotifyIcon, вы можете добавить эту функциональность в свои приложения.

Замечание

Если вы хотите, чтобы приложение было свернуто при запуске при отображении экземпляра NotifyIcon компонента на панели задач, задайте для свойства основной формы WindowState значение Minimized и убедитесь, что для свойства NotifyIcon компонента Visible задано значение true.

Связывание контекстного меню с компонентом NotifyIcon во время разработки

  1. В форму добавьте компонент NotifyIcon и задайте важные свойства, такие как Icon и Visible.

    Дополнительные сведения см. в статье "Практическое руководство. Добавление значков приложений на панель задач с компонентом NotifyIcon в Windows Forms".

  2. Добавьте компонент ContextMenu в Windows Form.

    Добавьте элементы меню в контекстное меню, представляющее команды, которые необходимо сделать доступными во время выполнения. Это также хорошее время, чтобы добавить улучшения меню в эти пункты меню, такие как ключи доступа.

  3. Установите свойство ContextMenu компонента NotifyIcon на контекстное меню, которое вы добавили.

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

Связывание контекстного меню с компонентом NotifyIcon программным способом

  1. Создайте экземпляр NotifyIcon класса и ContextMenu класса с любыми параметрами свойств, необходимыми для приложения (Icon и Visible свойств компонента NotifyIcon , элементов меню для ContextMenu компонента).

  2. Установите свойство ContextMenu компонента NotifyIcon на контекстное меню, которое вы добавили.

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

    Замечание

    В следующем примере кода создается базовая структура меню. Вам потребуется настроить варианты меню, подходящих для разрабатываемого приложения. Кроме того, необходимо написать код для обработки событий Click для этих элементов меню.

    Public ContextMenu1 As New ContextMenu
    Public NotifyIcon1 As New NotifyIcon
    
    Public Sub CreateIconMenuStructure()
       ' Add menu items to shortcut menu.
       ContextMenu1.MenuItems.Add("&Open Application")
       ContextMenu1.MenuItems.Add("S&uspend Application")
       ContextMenu1.MenuItems.Add("E&xit")
    
       ' Set properties of NotifyIcon component.
       NotifyIcon1.Icon = New System.Drawing.Icon _
          (System.Environment.GetFolderPath _
          (System.Environment.SpecialFolder.Personal)  _
          & "\Icon.ico")
       NotifyIcon1.Text = "Right-click me!"
       NotifyIcon1.Visible = True
       NotifyIcon1.ContextMenu = ContextMenu1
    End Sub
    
public NotifyIcon notifyIcon1 = new NotifyIcon();
public ContextMenu contextMenu1 = new ContextMenu();

public void createIconMenuStructure()
{
   // Add menu items to shortcut menu.
   contextMenu1.MenuItems.Add("&Open Application");
   contextMenu1.MenuItems.Add("S&uspend Application");
   contextMenu1.MenuItems.Add("E&xit");

   // Set properties of NotifyIcon component.
   notifyIcon1.Icon = new System.Drawing.Icon
      (System.Environment.GetFolderPath
      (System.Environment.SpecialFolder.Personal)
      + @"\Icon.ico");
   notifyIcon1.Visible = true;
   notifyIcon1.Text = "Right-click me!";
   notifyIcon1.Visible = true;
   notifyIcon1.ContextMenu = contextMenu1;
}
public:
   System::Windows::Forms::NotifyIcon ^ notifyIcon1;
   System::Windows::Forms::ContextMenu ^ contextMenu1;

   void createIconMenuStructure()
   {
      // Add menu items to shortcut menu.
      contextMenu1->MenuItems->Add("&Open Application");
      contextMenu1->MenuItems->Add("S&uspend Application");
      contextMenu1->MenuItems->Add("E&xit");

      // Set properties of NotifyIcon component.
      notifyIcon1->Icon = gcnew System::Drawing::Icon
          (String::Concat(System::Environment::GetFolderPath
          (System::Environment::SpecialFolder::Personal),
          "\\Icon.ico"));
      notifyIcon1->Text = "Right-click me!";
      notifyIcon1->Visible = true;
      notifyIcon1->ContextMenu = contextMenu1;
   }

Замечание

Необходимо инициализировать notifyIcon1 и contextMenu1,, что можно сделать, включив следующие инструкции в конструктор вашей формы.

notifyIcon1 = gcnew System::Windows::Forms::NotifyIcon();
contextMenu1 = gcnew System::Windows::Forms::ContextMenu();

См. также