Procedimiento para asociar un menú contextual con un componente NotifyIcon de formularios Windows Forms

Nota:

Aunque los controles MenuStrip y ContextMenuStrip reemplazan a los controles MainMenu y ContextMenu de las versiones anteriores y agregan funcionalidad, tanto MainMenu como ContextMenu se conservan por razones de compatibilidad con versiones anteriores y uso en el futuro, si así lo decide.

El componente NotifyIcon muestra un icono en el área de notificación de estado de la barra de tareas. Normalmente, las aplicaciones le permiten hacer clic con el botón derecho en este icono para enviar comandos a la aplicación que representa. Al asociar un componente ContextMenu al componente NotifyIcon, puede agregar esta funcionalidad a las aplicaciones.

Nota:

Si quiere que la aplicación se minimice al iniciarse y que se muestre una instancia del componente NotifyIcon en la barra de tareas, establezca la propiedad WindowState del formulario principal en Minimized y asegúrese de que la propiedad Visible del componente NotifyIcon esté establecida en true.

Para asociar un menú contextual al componente NotifyIcon en tiempo de diseño

  1. Agregue un componente NotifyIcon al formulario y establezca las propiedades importantes, como las propiedades Icon y Visible.

    Para más información, vea Procedimientos: Adición de iconos de aplicación a la barra de tareas con el componente NotifyIcon de Windows Forms.

  2. Agregue un componente ContextMenu a Windows Forms.

    Agregue elementos de menú al menú contextual que representen los comandos que quiere que estén disponibles en tiempo de ejecución. También es un buen momento para agregar mejoras de menú a estos elementos, como teclas de acceso.

  3. Establezca la propiedad ContextMenu del componente NotifyIcon en el menú contextual que agregó.

    Con esta propiedad establecida, se mostrará el menú contextual cuando se haga clic en el icono de la barra de tareas.

Para asociar un menú contextual al componente NotifyIcon mediante programación

  1. Cree una instancia de la clase NotifyIcon y una clase ContextMenu, con la configuración de propiedades que sea necesaria para la aplicación (las propiedades Icon y Visible para el componente NotifyIcon, elementos de menú para el componente ContextMenu).

  2. Establezca la propiedad ContextMenu del componente NotifyIcon en el menú contextual que agregó.

    Con esta propiedad establecida, se mostrará el menú contextual cuando se haga clic en el icono de la barra de tareas.

    Nota:

    En el ejemplo de código siguiente se crea una estructura de menú básica. Deberá personalizar las opciones de menú a las que se ajusten la aplicación que desarrolla. Además, es conveniente escribir código para controlar los eventos Click de estos elementos de menú.

    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;  
   }  

Nota:

Debe inicializar notifyIcon1 y contextMenu1,, lo que puede hacer si incluye las instrucciones siguientes en el constructor del formulario:

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

Consulte también