Objeto Menu para usuarios de Visual Basic 6.0

Actualización: noviembre 2007

El objeto Menu de Visual Basic 6.0 se reemplaza por el control MenuStrip o ContextMenuStrip en Visual Basic 2008. Los nombres de algunas propiedades, métodos, eventos y constantes son diferentes y, en algunos casos, existen diferencias de comportamiento.

Diferencias conceptuales

En Visual Basic 6.0, se crea un objeto Menu mediante el Editor de menús. Los objetos Menu están vinculados al formulario para el que se han creado pero se pueden modificar en tiempo de ejecución o mostrar como menús contextuales. Los menús creados con el objeto Menu no admiten de forma nativa sombreado, iconos o controles incrustados; sólo se pueden crear menús de estilo "sencillo" de Windows 98.

En Visual Basic 2008, el objeto Menu se reemplaza por los componentes MenuStrip y ContextMenuStrip. Los menús se pueden crear en tiempo de diseño utilizando la edición en contexto o se pueden crear en código. Los componentes MenuStrip y ContextMenuStrip permiten crear modernos menús de estilo barra de herramientas de Office, con compatibilidad completa para áreas sombreadas, iconos y controles incrustados como listas desplegables. Para obtener más información, vea Información general sobre el control MenuStrip (formularios Windows Forms).

Mostrar menús contextuales

En Visual Basic 6.0, puede mostrar un menú contextual llamando al método PopupMenu y pasándole cualquier objeto Menu de nivel superior. Por ejemplo, si tiene un menú Edición denominado mnuEdit con submenús Cortar, Copiar y Pegar, puede mostrar un menú contextual con los comandos Cortar, Copiar y Pegar llamando a PopupMenu mnuEdit.

En Visual Basic 2008, los menús contextuales se muestran mediante un componente ContextMenuStrip independiente. No hay equivalente para el método PopupMenu, no obstante, puede seguir compartiendo comandos entre MenuStrip y ContextMenuStrip al crear ContextMenuStrip en tiempo de diseño y al compartir controladores de eventos.

Cambios de código para el objeto Menu

En los ejemplos siguientes se muestran las diferencias entre las técnicas de codificación de Visual Basic 6.0 y Visual Basic 2008.

Cambios de código para mostrar menús contextuales

El código siguiente muestra cómo mostrar los comandos Cortar, Copiar y Pegar en un menú Edición existente en un menú contextual.

' Visual Basic 6.0
Private Sub mnuCut_Click()
    MsgBox "You selected Cut"
End Sub
Private Sub mnuCopy_Click()
    MsgBox "You selected Copy"
End Sub

Private Sub mnuPaste_Click()
    MsgBox "You selected Paste"
End Sub

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    If Button = vbRightButton Then
        PopupMenu mnuEdit
    End If
End Sub
' Visual Basic
' You must first add a ContextMenuStrip component to the form at design 
' time and add Cut, Copy, and Paste menu items named 
' CutContextMenuItem, CopyContextMenuItem, and PasteContextMenuItem.

Private Sub CutToolStripMenuItem_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles CutToolStripMenuItem.Click
    MsgBox("Cut")
End Sub

Private Sub CopyToolStripMenuItem_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles CopyToolStripMenuItem.Click
    MsgBox("Copy")
End Sub

Private Sub PasteToolStripMenuItem_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles PasteToolStripMenuItem.Click
    MsgBox("Paste")
End Sub
Private Sub Form1_MouseDown(ByVal sender As Object, ByVal e As _
System.Windows.Forms.MouseEventArgs) Handles Me.MouseDown

  If e.Button = Windows.Forms.MouseButtons.Right Then
    Me.ContextMenuStrip = ContextMenuStrip1

    AddHandler CutContextMenuItem.Click, _
      AddressOf CutToolStripMenuItem_Click

    AddHandler CopyContextMenuItem.Click, _
      AddressOf CopyToolStripMenuItem_Click

    AddHandler PasteContextMenuItem.Click, _
      AddressOf PasteToolStripMenuItem_Click
  End If
End Sub

Equivalencias de métodos y propiedades de menús

En las siguientes tablas se enumeran propiedades y métodos de Visual Basic 6.0, junto con sus equivalentes en Visual Basic 2008. No se enumeran aquellas propiedades y métodos que tienen el mismo nombre y comportamiento. Salvo que se indique lo contrario, todas las enumeraciones de Visual Basic 2008 se asignan al espacio de nombres System.Windows.Forms.

Esta tabla proporciona vínculos a temas que explican las diferencias de comportamiento. Cuando no existe un equivalente directo en Visual Basic 2008, se proporcionan vínculos a temas en los que se incluyen alternativas.

Propiedades

Visual Basic 6.0

Equivalente en Visual Basic 2008

Caption

Text (MenuStripItem)

HelpContextID

Nueva implementación. Para obtener más información, vea Compatibilidad con la Ayuda para usuarios de Visual Basic 6.0.

Index

Nueva implementación. Llame a la propiedad Index de la clase ToolStripItemCollection.

NegotiatePosition

No hay equivalente. Esta propiedad sólo se utilizaba para la vinculación e incrustación de objetos OLE que ya no se admite.

Parent

FindForm (método)

WindowList

MdiWindowListItem

Métodos

Visual Basic 6.0

Equivalente en Visual Basic 2008

PopupMenu

Nueva implementación. Utilice un componente ContextMenuStrip.

Notas de actualización

Cuando se actualiza una aplicación de Visual Basic 6.0 a Visual Basic 2008, no se actualiza ninguna llamada al método PopupMenu; debe crear menús contextuales para reemplazarlas.

Vea también

Conceptos

Control de menús para usuarios de Visual Basic 6.0

Referencia

Información general sobre el control MenuStrip (formularios Windows Forms)

Otros recursos

Controles de formularios Windows Forms para usuarios de Visual Basic 6.0