Поделиться через


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

Примечание

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

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

Примечание

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

Чтобы связать контекстное меню с компонентом NotifyIcon в режиме разработки

  1. Добавьте в форму компонент Icon и задайте значения для основных свойств, таких как NotifyIcon и Visible.

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

  2. Добавьте компонент ContextMenu в форму Windows Forms.

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

  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 NotifyIcon notifyIcon1 = new NotifyIcon();
public ContextMenu contextMenu1 = new ContextMenu();

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

   // Set properties of NotifyIcon component.
   notifyIcon1.set_Icon(new System.Drawing.Icon
      (System.Environment.GetFolderPath
      (System.Environment.SpecialFolder.Personal)
      + "\\Icon.ico"));
   notifyIcon1.set_Text("Right-click me!");
   notifyIcon1.set_Visible(true);
   notifyIcon1.set_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();

См. также

Задачи

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

Ссылки

Общие сведения о компоненте NotifyIcon (Windows Forms)

NotifyIcon

Icon

Другие ресурсы

Компонент NotifyIcon (Windows Forms)