none
¿Como ocultar y luego mostrar un formulario? RRS feed

  • Pregunta

  • hola, soy un tanto nuevo en esto del lenguaje, c# pero igual puedo moverme dentro de el, enpece con visual studio express 2008 (y sigo con este), estoy aprendiendo de a poco a usarlo , y lo que queria hacer es una aplicacion(a modo de aprencizaje) que abra el formulario principal, y me de dos opciones para seguir a otro formulario, y lo que no se es como volver a mostrar el primer formulario, en VB solo basta con el metodo Form1.Show(), pero en C# es con objetos de la crase Form1, y sabiendo que ya existe el objeto del form1 (Application.Run(new DialogStart()); de Program.cs) como puedo acceder a ese objeto, o hay alguna manera para hacerlo estilo Wizard (como los instaladores), lo siento por escribir tanto, pero no supe sintetizar, igualmente les agradeceria sus ayudas
    viernes, 11 de diciembre de 2009 16:31

Respuestas

  • La verdad es que no entendi bien el problema.

    Si lo que quieres es que al apretar un boton te oculte el formulario y te muestre uno nuevo y que al cerrar este te vuelva a mostrar el formulario anterior puedes hacer lo siguiente.

    En el evento click del boton

                Form2 frm = new Form2();

                this.Hide();
                frm.ShowDialog();
                this.Show();

    Lo que hace el codigo es crear una nueva instancia del formulario 2 ocultar el formulario principal (el que tiene los botones), muestra el segundo formulario. Cuando lo cierres vuelve a mostrar el primer formulario.

    Espero que sea lo que queires.

    Saludos.

    Sparow

    • Marcado como respuesta kz8man sábado, 12 de diciembre de 2009 2:29
    viernes, 11 de diciembre de 2009 16:57

Todas las respuestas

  • La verdad es que no entendi bien el problema.

    Si lo que quieres es que al apretar un boton te oculte el formulario y te muestre uno nuevo y que al cerrar este te vuelva a mostrar el formulario anterior puedes hacer lo siguiente.

    En el evento click del boton

                Form2 frm = new Form2();

                this.Hide();
                frm.ShowDialog();
                this.Show();

    Lo que hace el codigo es crear una nueva instancia del formulario 2 ocultar el formulario principal (el que tiene los botones), muestra el segundo formulario. Cuando lo cierres vuelve a mostrar el primer formulario.

    Espero que sea lo que queires.

    Saludos.

    Sparow

    • Marcado como respuesta kz8man sábado, 12 de diciembre de 2009 2:29
    viernes, 11 de diciembre de 2009 16:57
  • hola

    te dejo un ejemplo en este link


    igualmente el codigo del form principal podrias ser aalgo como esto

        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }

            private void button1_Click(object sender, EventArgs e)
            {
                Form2 form = new Form2();
                form.Show(this);

                this.Hide();

            }

            private void button2_Click(object sender, EventArgs e)
            {
                Form3 form = new Form3();
                form.Show(this);

                this.Hide();

            }
        }


    como veras pasa un owner en el parametro del form hijo que abre

    y en los form hijos podrias hacer algo como esto

        public partial class Form2 : Form
        {
            public Form2()
            {
                InitializeComponent();
            }

            private void button1_Click(object sender, EventArgs e)
            {

                this.Owner.Show();

                this.Close();
            }
        }

    como veras toma al form padre y lo vuelve a mostrar, cerrando el que estaba visible

    saludos
    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    viernes, 11 de diciembre de 2009 17:21
  • el ejemplo que muestra Sparow tambien podrias ser aplicado

    public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }

            private void button1_Click(object sender, EventArgs e)
            {
                Form2 form = new Form2();
               
                this.Hide();
               
                form.ShowDialog();

                this.Show();

            }

            private void button2_Click(object sender, EventArgs e)
            {
                Form3 form = new Form3();
               
                this.Hide();
               
                form.ShowDialog();

                this.Show();

            }
        }


    en el otro form solo lo cerrarias
    son diferentes tecnicas para lograr lo mismo

        public partial class Form2 : Form
        {
            public Form2()
            {
                InitializeComponent();
            }

            private void button1_Click(object sender, EventArgs e)
            {
                this.Close();
            }
        }


    saludos

    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    viernes, 11 de diciembre de 2009 17:25
  • Gracias a todos por sus respuestas, creo que al abrirlo como dialogo queda pausado el Form principal y me permite volver, pero ¿como hacerlo para que no parezca otra aplicacion que se abre?, es decir, que cuando muestre el segundo form, en la barra de tarreas de Windows siga estando el misno botón?
    viernes, 11 de diciembre de 2009 17:47
  • En el segundo formulario pones la propiedad ShowInTaskBar en false.

    Saludos

    Sparow
    viernes, 11 de diciembre de 2009 17:52
  • si, pero haciendo esto deja de mostrar el botón del primer formulario...
    viernes, 11 de diciembre de 2009 17:57
  • Creo que para que puedas lograr lo que quieres tienes que utilizar el formulario de forma modal, es decir, tu primer formulario, cuando abres tu aplicacion tienes que ponerle su propiedad IsMdiContainer en true y despues cuando vas a habrir el formulario 2 a patir de ese lo llamas de la siguiente manera

    Form2 form=new Form2();
    form.MdiParent=this;
    form.show();

    de esta manera abriras el formulario y veras un solo boton en tu barra de tareas.


    Salu2
    viernes, 11 de diciembre de 2009 20:30
  • hola


    si el problema es que si usas formulario modales al ocultar el form definido como mdi container tambien ocultas a los formulario hijos, que tenga abiertos


    saludos
    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    viernes, 11 de diciembre de 2009 22:09
  • si pero lo que yo quiero es que aparezca o funcione como funcionan los Wizard donde se pone siguiente no que quede dentro del form tan asi
    sábado, 12 de diciembre de 2009 1:08
  • hola

    el tema que los wizards no ocultan y muestran formularios, es un unico formulario cuyo contenido es dinamico

    o sea podrias hacerlo si usa el TabControl, mostando de a una solapa a la vez, y con los botones de desplazamiento vas naveganfo el control tab a tab, es lo mas directo para un wizard

    despues hay otras implementaciones con user control, o sino hasta con formulario que se cargan en un panel

    pero bueno depende de hasta donde queiras llegar, con el tab es muy simple ya que mostraras uno y el resto estara oculto, al fdar siguiente ocultas el anterior y muestras el que sigue en la posicion del indice de tabs

    pero sino te gusta el tab y queires hacerlo con forma tambien se podria

    How to: C ó mo insertar un WinForm dentro de un control TabPanel

    saludos
    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    sábado, 12 de diciembre de 2009 1:30
  • hola

    pero no entendi al final buscabas mostra u ocultar los formulario o era un wizard ?

    porque segun veo al final preguntabas por un form similar a un wizard, pero despues veo que te ha sido util la respuesta de Sparow, la cual es correcta, pero me dejo la duda de cual era el objetivo final a buscar en la pregunta

    saludos
    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    sábado, 12 de diciembre de 2009 2:48
  • Muy bueno Leandro!!!!!
    domingo, 2 de abril de 2017 15:41
  • Gracias!!! Q suerte q explicaste eso, me re-sirve!
    jueves, 27 de abril de 2017 3:23
  • Thanks 
    domingo, 2 de julio de 2017 22:16
  • Muchas gracias, por esta respuesta, estaba tratando de realizar esto mismo y mi profesor de programación no me entendía cuando le mostraba mi duda... pero gracias a este código puedo cerrar mis programas correctamente por fin.
    viernes, 11 de octubre de 2019 11:40