none
Una consulta elemental sobre menús contextuales. RRS feed

  • Pregunta

  • Suponiendo que añado en el formulario un menú contextual como el de la imagen:

    La consulta es ¿cómo accedo al submenú que tiene las opciones A, B, C para cambiar sus propiedades referidas a todo ese sub menú o a cada uno de los items que contiene?

    viernes, 26 de marzo de 2021 19:53

Respuestas

  • Cada uno de ellos tendrá un nombre, bien sea asignado por el diseñador o bien sea asignado por ti si lo cambiaste desde la ventana de propiedades. Desde código accedes al elemento por su nombre y puedes cambiar las propiedades. No tiene nada que ver el hecho de que esté anidado en un submenú. Cada item tiene un campo a nivel de clase, exactamente igual que si no estuviese anidado.

    Por ejemplo, para cambiar el texto:

    Me.ToolStripMenuItem12ToolStripMenuItem.Text = "Aquí el texto"

    • Marcado como respuesta James2016-2 viernes, 26 de marzo de 2021 21:08
    viernes, 26 de marzo de 2021 21:06

Todas las respuestas

  • En teoría debería bastar con hacer click encima desde el diseñador, y acudir a la ventana de propiedades (F4) para cambiarlas.

    Pero si por alguna razón no consigues hacerte con el diseñador gráfico, puedes recurrir al truco de acudir al código fuente generado por el diseñador y cambiar ahí directamente las propiedades. Para ello, busca la llamada a InitializeComponent en el Sub New del Form, haz click encima, y pulsa la F12 para "Ir a la definición". Esto te llevará al fichero NombreDelForm.Designer.vb, que normalmente está oculto pero puedes desocultarlo pulsando en el Explorador de Soluciones el iconito de "Ver todos los archivos".

    Dentro de ese fichero encontrarás las propiedades del menú (y de todos los demás controles) y puedes editarlas si lo deseas. Haz esto con mucha precaución porque si cometes algún error de sintaxis, después no te deja abrir el formulario en el diseñador. Recomiendo que antes de cambiar nada hagas una copia de seguridad de ese archivo.

    viernes, 26 de marzo de 2021 20:07
  • En teoría debería bastar con hacer click encima desde el diseñador, y acudir a la ventana de propiedades (F4) para cambiarlas.

    Pero si por alguna razón no consigues hacerte con el diseñador gráfico, puedes recurrir al truco de acudir al código fuente generado por el diseñador y cambiar ahí directamente las propiedades. Para ello, busca la llamada a InitializeComponent en el Sub New del Form, haz click encima, y pulsa la F12 para "Ir a la definición". Esto te llevará al fichero NombreDelForm.Designer.vb, que normalmente está oculto pero puedes desocultarlo pulsando en el Explorador de Soluciones el iconito de "Ver todos los archivos".

    Dentro de ese fichero encontrarás las propiedades del menú (y de todos los demás controles) y puedes editarlas si lo deseas. Haz esto con mucha precaución porque si cometes algún error de sintaxis, después no te deja abrir el formulario en el diseñador. Recomiendo que antes de cambiar nada hagas una copia de seguridad de ese archivo.

    Gracias, pero creo que no me dejé entender, se me pasó. Me refería acceder a los elementos programáticamente. O sea cree el menú vía diseño, pero quiero acceder vía código a los elementos ya creados. Sobre todo al submenú con items A, B, C.



    • Editado James2016-2 viernes, 26 de marzo de 2021 20:16
    viernes, 26 de marzo de 2021 20:14
  • Cada uno de ellos tendrá un nombre, bien sea asignado por el diseñador o bien sea asignado por ti si lo cambiaste desde la ventana de propiedades. Desde código accedes al elemento por su nombre y puedes cambiar las propiedades. No tiene nada que ver el hecho de que esté anidado en un submenú. Cada item tiene un campo a nivel de clase, exactamente igual que si no estuviese anidado.

    Por ejemplo, para cambiar el texto:

    Me.ToolStripMenuItem12ToolStripMenuItem.Text = "Aquí el texto"

    • Marcado como respuesta James2016-2 viernes, 26 de marzo de 2021 21:08
    viernes, 26 de marzo de 2021 21:06
  • Cada uno de ellos tendrá un nombre, bien sea asignado por el diseñador o bien sea asignado por ti si lo cambiaste desde la ventana de propiedades. Desde código accedes al elemento por su nombre y puedes cambiar las propiedades. No tiene nada que ver el hecho de que esté anidado en un submenú. Cada item tiene un campo a nivel de clase, exactamente igual que si no estuviese anidado.

    Por ejemplo, para cambiar el texto:

    Me.ToolStripMenuItem12ToolStripMenuItem.Text = "Aquí el texto"

    Ah OK, muchas gracias, eso trataba de hacer.
    viernes, 26 de marzo de 2021 21:08
  • Hola James,

    Gracias por confirmar que se ha encontrado una solución a la consulta realizada.

    Gracias por usar los foros de MSDN.

    Eric Ruiz

    ____________________________

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde.

    Si tiene algún cumplido o reclamo sobre el soporte de MSDN siéntase en la libertad de contactar MSDNFSF@microsoft.com.

    viernes, 26 de marzo de 2021 23:05
    Moderador