none
OCULTAR Y MOSTRAR MENUSTRIP RRS feed

  • Pregunta

  • Buenas, tengo un form parent que llama a un child a travez de un menustrip, lo que quiero es que al hacer click en la opcion correspondiente y me muestre el form child el menustrip se oculte y luego al cerrar el formulario nuevamente se muestre el menu, logro hacerlo ocultar al llamar el formulario child colocando una linea con la propiedad menustrip1.visible=false, pero no logro visualizarlo de nuevo al cerrar ese formulario, estoy colocando menustrip1.visible=true en la propiedad formclosed del formulario que cierro, pero me dice que menustrip1 no existe en el contexto actual o es que debo colocarlo en algun otro lugar?, gracias por la ayuda que puedan darme.
    lunes, 9 de septiembre de 2019 0:29

Respuestas

  • Hola José Manuel

    El MenuStrip que intentas hacer nuevamente visible no pertenece a la clase del form child, sino a la del form parent. Por eso no existe en el contexto del primero, en cuyo FormClosed intentas hacerlo visible. Como lo que necesitas es acceder a un miembro de una clase en la cual no estás (¿debo colocarlo en otro lugar?), o sea no podes colocarlo en algún lugar de su propia clase, sino que debes acceder desde otro objeto de otra clase, lo que necesitas es una referencia al objeto "OWNER" (dueño) de ese objeto miembro, para lo cual le pasas la referencia del form parent al form child al llamar a su método ShowDialog(). Para otras clases que pudieras tener es lo mismo, pero tendrías que definir los métodos vos y pasarles como argumentos lo que se precise.

    // en Form Parent

    FormChild form = new FormChild();

    form.ShowDialog(this);   // this es una referencia "A SI MISMO", en este caso Form Parent, se la pasas al child

    // en FormClosed de Form Child

    FormParent owner = (FormParent)this.Owner;  // owner contiene una ref. al "dueño" o parent de child

    owner.menuStrip1.Visible = true;  // el MenuStrip se hace visible

    Saludos

    Pablo

    • Marcado como respuesta Jose Manuel44 lunes, 9 de septiembre de 2019 13:50
    lunes, 9 de septiembre de 2019 1:33
  • Si pasa eso que form2 no sale del marco de form1 es probablemente porque form1 estaba asignado como form MDI, que lo haces con 

    IsMdiContainer = true;

    Es un tipo de formulario que puede tener abiertos múltiples documentos de igual o diferente tipo. MDI es multiple document interface. Cuando está activado IsMdiContainer los form hijos no salen del marco del parent

    Saludos 

    desde Buenos Aires, Argentina

    • Marcado como respuesta Jose Manuel44 lunes, 9 de septiembre de 2019 23:44
    lunes, 9 de septiembre de 2019 17:48

Todas las respuestas

  • Hola José Manuel

    El MenuStrip que intentas hacer nuevamente visible no pertenece a la clase del form child, sino a la del form parent. Por eso no existe en el contexto del primero, en cuyo FormClosed intentas hacerlo visible. Como lo que necesitas es acceder a un miembro de una clase en la cual no estás (¿debo colocarlo en otro lugar?), o sea no podes colocarlo en algún lugar de su propia clase, sino que debes acceder desde otro objeto de otra clase, lo que necesitas es una referencia al objeto "OWNER" (dueño) de ese objeto miembro, para lo cual le pasas la referencia del form parent al form child al llamar a su método ShowDialog(). Para otras clases que pudieras tener es lo mismo, pero tendrías que definir los métodos vos y pasarles como argumentos lo que se precise.

    // en Form Parent

    FormChild form = new FormChild();

    form.ShowDialog(this);   // this es una referencia "A SI MISMO", en este caso Form Parent, se la pasas al child

    // en FormClosed de Form Child

    FormParent owner = (FormParent)this.Owner;  // owner contiene una ref. al "dueño" o parent de child

    owner.menuStrip1.Visible = true;  // el MenuStrip se hace visible

    Saludos

    Pablo

    • Marcado como respuesta Jose Manuel44 lunes, 9 de septiembre de 2019 13:50
    lunes, 9 de septiembre de 2019 1:33
  • Gracias en verdad eres un TIGRE Pablito, funciona ok, una consulta mas abusando de tus conocimientos si me lo permites, antes cuando llamaba el form2 (child) este se mantenía dentro del contenedor form1 es decir lo movía y no se salia del marco del form1 se iba "escondiendo por detrás" por decirlo de alguna manera, ahora se sale y es visible todo el form2 por fuera del marco del parent, puedo volver a controlarlo de nuevo de esa manera, GRACIAS y un saludo desde Arequipa, PERU.
    lunes, 9 de septiembre de 2019 13:57
  • Si pasa eso que form2 no sale del marco de form1 es probablemente porque form1 estaba asignado como form MDI, que lo haces con 

    IsMdiContainer = true;

    Es un tipo de formulario que puede tener abiertos múltiples documentos de igual o diferente tipo. MDI es multiple document interface. Cuando está activado IsMdiContainer los form hijos no salen del marco del parent

    Saludos 

    desde Buenos Aires, Argentina

    • Marcado como respuesta Jose Manuel44 lunes, 9 de septiembre de 2019 23:44
    lunes, 9 de septiembre de 2019 17:48