none
MenuStrip - Cambiar una propiedad desde un Child RRS feed

  • Pregunta

  • Hola,

    Estoy programando en VS2005 en vb.

    Sencillamente lo que quiero hacer es desde un child Form poder modificar el estado ( enabled ) de un item.

     

    Parent ( mainform ) tiene un MenuStrip uno de los Items es File

    mediante una funcion  x realizo lo siguiente

    Me.FileMenu.Enabled = False

     

    Esto funciono sin problemas. ( si desde otro funcion relizo un True, tambien funciona ). Es decir el Item del Menu, esta desabilitado.

     

    Ahora desde un Child Form

    Ejecuto Mainform.FileMenu.Enabled = True

    y aunque no da errores, no habilita el item.

     

    Lo raro es que si reemplazo x un

    Mainform.FileMenu.Text o size las propiedas las veo.

    Es decir lo q me parece que no puedo hacer andar es Setiar una propiedad..

     

    Alquien sabe en que me estoy equivocando o como hacerlo andar?

     

    Desde ya, gracias x su time.

    Bruno.

     

    domingo, 13 de mayo de 2007 16:14

Respuestas

  • No se vosotros, pero yo no soy muy dado a poner el ambito de un control de formulario como public.
    En este caso lo que haria es una funcion en el formulario padre, con los parametros necesarios para activar o desactivar el menu. Dejo un ejemplo (esta en C#, pero es que ahora mismo no puedo pensar en vb...)

    Code Snippet

    internal void ActivarMenu(string Menu, bool estado)
            {
                switch (Menu)
                {
                    case "FileMenu":
                        this.Filemenu.enabled = estado;
                        break;
                    case "Report":
                        this.Report.enabled = estado;
                        break;
                }
            }


    Luego bastaria con llamar a esa función desde el hijo, con los parametros necesarios
    miércoles, 16 de mayo de 2007 7:43

Todas las respuestas

  • No sé si es la misma pregunta, mira aquí

    Saludos

    domingo, 13 de mayo de 2007 22:21
  • Felipe, desde ya muchas gracias.

    Si, la pregunta es la misma, sin emabargo la solucion es la misma q yo aplique

     

    Mainform.File.Enabled = True

    ( nameForm).(itemdelMenu).(opcion) = X

     

    El menu esta configurado como Public.

     

    Y como dije anteriormente, la raro es que haciendo esto, no funciona....

     

    Se te ocurre algo mas?

     

    martes, 15 de mayo de 2007 13:56
  • Hola, ¿podrías poner el código de cómo abres el child y en donde deshabilitas el menú del main?
    Saludos
    martes, 15 de mayo de 2007 18:38
  • Ok, voy a tratar de ser lo mas claro posible.

    hay una app con form llamado mainform que es el que tiene el menu

    una funcion logoff que cierra todas las ventanas y desabilita algunos items del menu

    ' Cierro todas las ventanas abiertas

    Dim i As Integer

    For i = 0 To Me.MdiChildren.Length - 1

    Me.MdiChildren(0).Close()

    Next

    ' Pongo en disable algunas opciones del menu

    'Me.FileMenu.Enabled = False

    Me.Setting.Enabled = False

    Me.Report.Enabled = False

    ' Pongo en disable el button logoff y el button change passwd

    Me.LogOff.Enabled = False

    Me.ChangePwd.Enabled = False

    ' Pongo en Enabled el button login

    Me.LogIn.Enabled = True

     

    Luego, desde un item del menu llamado Login,  abro un nuevo child para hacer un login

    Dim frm4 As New LoginInterno

    frm4.MdiParent = Me

    ' Para mostrarlo maximizado al crear la ventana

    'frm4.WindowState = FormWindowState.Maximized

    frm4.MinimizeBox = False

    frm4.MaximizeBox = False

    frm4.Show()

     

    si el login es exitoso, habilitar again los items del menu.

    If Ingreso_Ok = True Then

    ' Acceso valido

    ' Pongo en enable algunas opciones del menu

    Mainform.FileMenu.Enabled = True

    Mainform.Setting.Enabled = True

    Mainform.Report.Enabled = True

    Close()

     

    se entiende?

    Desde ya muchas gracias x perder tu time.

    Sl2

     

    martes, 15 de mayo de 2007 18:50
  • No se vosotros, pero yo no soy muy dado a poner el ambito de un control de formulario como public.
    En este caso lo que haria es una funcion en el formulario padre, con los parametros necesarios para activar o desactivar el menu. Dejo un ejemplo (esta en C#, pero es que ahora mismo no puedo pensar en vb...)

    Code Snippet

    internal void ActivarMenu(string Menu, bool estado)
            {
                switch (Menu)
                {
                    case "FileMenu":
                        this.Filemenu.enabled = estado;
                        break;
                    case "Report":
                        this.Report.enabled = estado;
                        break;
                }
            }


    Luego bastaria con llamar a esa función desde el hijo, con los parametros necesarios
    miércoles, 16 de mayo de 2007 7:43