Exportar (0) Imprimir
Expandir todo

ContextMenu (Clase)

Representa un menú contextual. Aunque el control ContextMenuStrip reemplaza y agrega funcionalidad al control ContextMenu de versiones anteriores, se conserva ContextMenu a efectos de compatibilidad con versiones anteriores y uso futuro, en su caso.

Espacio de nombres: System.Windows.Forms
Ensamblado: System.Windows.Forms (en system.windows.forms.dll)

public class ContextMenu : Menu
public class ContextMenu extends Menu
public class ContextMenu extends Menu
No aplicable.

La clase ContextMenu representa menús contextuales que se pueden mostrar cuando el usuario hace clic con el botón secundario del mouse (ratón) en un control o en un área del formulario. Los menús contextuales suelen utilizarse para combinar los distintos elementos de menú desde un MainMenu de un formulario que son útiles para el usuario dado el contexto de la aplicación. Por ejemplo, se puede usar un menú contextual asignado a un control TextBox para proporcionar elementos de menú que permitan cambiar la fuente del texto, buscar texto en el control, o funciones del Portapapeles para copiar y pegar texto. En un menú contextual, también se pueden mostrar nuevos objetos MenuItem que no se encuentren en un MainMenu para proporcionar comandos específicos de la situación que no sería lógico incluir en MainMenu.

Normalmente, el menú contextual aparece cuando el usuario hace clic con el botón secundario del mouse en un control o en el propio formulario. Los controles visibles y Form tienen una propiedad ContextMenu que enlaza la clase ContextMenu al control que muestra el menú contextual. Más de un control puede usar ContextMenu. La propiedad SourceControl se utiliza para determinar qué control mostró por última vez el menú contextual a fin de realizar tareas específicas del control o modificar el menú contextual mostrado para el control.

Puede ser útil saber cuándo se va a mostrar el menú contextual para establecer marcas de verificación, deshabilitar elementos y realizar otras tareas propias del menú antes de que dicho menú esté disponible para el usuario. Es posible controlar el evento Popup para determinar cuándo se va a mostrar el menú contextual.

NotaNota:

Para reutilizar en ContextMenu los objetos MenuItem que se muestran en MainMenu, hay que crear una copia del menú mediante el método CloneMenu de la clase MenuItem. También es posible combinar elementos de menú junto con sus elementos de submenú correspondientes en un único objeto MenuItem a través del método MergeMenu de la clase MenuItem.

Nota de la plataforma Windows Mobile 2003 para Pocket PC, Windows Mobile 2003 para Smartphone, Windows CE: En Pocket PC, evite utilizar menús contextuales en formularios secundarios porque se siguen mostrando después de que se destruyen los formularios principales.

En el ejemplo de código siguiente se crea un controlador de eventos para el evento Popup del menú ContextMenu. El código del controlador de eventos determina cuál de los dos controles, un PictureBox denominado pictureBox1 y un TextBox denominado textBox1, es el control que muestra el menú contextual. Dependiendo de qué control haya hecho que ContextMenu mostrase su menú contextual, se agregarán los objetos MenuItem correspondientes al ContextMenu. Este ejemplo requiere que haya definida en el formulario una instancia de la clase ContextMenu, denominada contextMenu1. También se requiere que se haya agregado al formulario un control TextBox y un control PictureBox, y que la propiedad ContextMenu de estos controles esté establecida en contextMenu1.

private void MyPopupEventHandler(System.Object sender, System.EventArgs e)
 {
    // Define the MenuItem objects to display for the TextBox.
    MenuItem menuItem1 = new MenuItem("&Copy");
    MenuItem menuItem2 = new MenuItem("&Find and Replace");
    // Define the MenuItem object to display for the PictureBox.
    MenuItem menuItem3 = new MenuItem("C&hange Picture");

    // Clear all previously added MenuItems.
    contextMenu1.MenuItems.Clear();
 
    if(contextMenu1.SourceControl == textBox1)
    {
       // Add MenuItems to display for the TextBox.
       contextMenu1.MenuItems.Add(menuItem1);
       contextMenu1.MenuItems.Add(menuItem2);
    }
    else if(contextMenu1.SourceControl == pictureBox1)
    {
       // Add the MenuItem to display for the PictureBox.
       contextMenu1.MenuItems.Add(menuItem3);
    }
 }

private void MyPopupEventHandler(Object sender, EventArgs e)
{
    // Define the MenuItem objects to display for the TextBox.
    MenuItem menuItem1 = new MenuItem("&Copy");
    MenuItem menuItem2 = new MenuItem("&Find and Replace");

    // Define the MenuItem object to display for the PictureBox.
    MenuItem menuItem3 = new MenuItem("C&hange Picture");

    // Clear all previously added MenuItems.
    contextMenu1.get_MenuItems().Clear();
    if (contextMenu1.get_SourceControl().Equals(textBox1)) {
        // Add MenuItems to display for the TextBox.
        contextMenu1.get_MenuItems().Add(menuItem1);
        contextMenu1.get_MenuItems().Add(menuItem2);
    }
    else {
        if (contextMenu1.get_SourceControl().Equals(pictureBox1)) {
            // Add the MenuItem to display for the PictureBox.
            contextMenu1.get_MenuItems().Add(menuItem3);
        }
    }
} //MyPopupEventHandler

System.Object
   System.MarshalByRefObject
     System.ComponentModel.Component
       System.Windows.Forms.Menu
        System.Windows.Forms.ContextMenu

Los miembros estáticos públicos (Shared en Visual Basic) de este tipo son seguros para la ejecución de subprocesos. No se garantiza que los miembros de instancias sean seguros para la ejecución de subprocesos.

Windows 98, Windows 2000 Service Pack 4, Windows CE, Windows Millennium, Windows Mobile para Pocket PC, Windows Server 2003, Windows XP Media Center, Windows XP Professional x64, Windows XP SP2, Windows XP Starter

Microsoft .NET Framework 3.0 es compatible con Windows Vista, Microsoft Windows XP SP2 y Windows Server 2003 SP1.

.NET Framework

Compatible con: 3.0, 2.0, 1.1, 1.0

.NET Compact Framework

Compatible con: 2.0, 1.0
Mostrar:
© 2014 Microsoft