none
Como modificar la propiedad ENABLED de un PictureBox de un Form desde otro Form RRS feed

  • Pregunta

  • Hola a todos a ver si me echan una mano con  C#.

    Tengo Form1 en el cual tengo un picturebox que al darle click termina la aplicación.
    Desde este Form1 llamo otro Form2. Lo que necesito es que se desactive el PictureBox del Form1 al llamar a Form2 (esto ya lo conseguí) y cuando se cierre el Form2 que se llamó desde el Form1 active el PictureBox del form1. (Esto no lo he logrado)

    Ya instancié el Form1 en el Form2 y no consigo manipular el PictureBox del Form1.
    En mi aplicación muestro el Form2 dentro de un panel en el Form1 y quiero que cada vez que se cierre el Form2 mostrado en el panel se active el PictureBox del Form1.

    Tengo algo así en Form2 que es llamado desde el Form1:

    Form1 menu = new Form1();
    menu.PictureBox1.Enabled = True;   --  no es accesible debido a su nivel de protección


    Por favor ayuda.

    viernes, 31 de julio de 2020 20:09

Respuestas

  • Hola

    Entonces hace esto:

    En el form hijo agrega un miembro de clase de tipo form padre. Cuando creas el form hijo le asignas a esa variable la referencia al form padre (this). Luego en el form hijo accedes al pictureBox (que lo tenes que declarar public en el form padre) a través de esa variable.

    Saludos

    • Marcado como respuesta Claudia_CA lunes, 17 de agosto de 2020 18:23
    miércoles, 5 de agosto de 2020 22:05

Todas las respuestas

  • Hola Claudia

    Si instancias el Form1 en Form2 creas un nuevo Form1 que no es desde el cual creaste el Form2.

    Lo que tendrías que hacer es pasarle al Form2 una referencia a Form1 y en el evento FormClosing (cuando se cierra) del Form2 activar el PictureBox, que debe ser public. 

    Al crear el Form2 en Form1, le pasas una referencia (this : si mismo) a Form1

    Form2 form = new Form2();

    form.ShowDialog(this);  

    En Form2 creas la referencia

    Form1 owner = (Form1)Owner;

    Luego podes acceder a los miembros public de Form1

    owner.pictureBox1.Enabled = true;

    Esto último lo deberías poner en el método del evento FormClosing si queres que lo haga al cerrarse el Form2.

    Saludos

    Pablo

    viernes, 31 de julio de 2020 22:44
  • Hola Claudia_CA, 

      

    ¿Alguna novedad sobre la consulta realizada? ¿Han sido útiles las  respuestas proporcionadas?  

    Espero su respuesta.  

    Cualquier duda referente a productos Microsoft, puedes consultarnos. Es un gusto informarte. 

    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.  

    Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft.   

    Este contenido es proporcionado "tal cual" y no implica ninguna responsabilidad de parte de Microsoft. 

    viernes, 31 de julio de 2020 23:30
    Moderador
  • Muchas gracias por tu apoyo. Mira te comparto lo que estoy haciendo.

     FluentDesignForm1   <- este el el form 1  en el cual muestro un menu y un panel central; dentro de este panel central estoy mostrando los diferentes formularios que son llmadas desde este FluentDesignForm1. Tengo el siguiente método

         private void OpenChildForm(Object childForm)
            {
                Form Fh = childForm as Form;
                Fh.TopLevel = false;
                Fh.FormBorderStyle = FormBorderStyle.None;
                Fh.Dock = DockStyle.Fill;
                this.panelDesktopPane.Controls.Add(Fh);
                this.panelDesktopPane.Tag = Fh;
                Fh.BringToFront();
                Fh.Show();
                lblTitle.Text = Fh.Text;
            }

     y cuano se elije una opción del menú, lo llamo de la siguiente manera:

            private void accordionControlElement2_Click(object sender, EventArgs e)
            {
                OpenChildForm(new Compras());
                BtnSalir.Enabled = false;
            }

    Al llamar al formulario Compras y terminar el proceso, cierro dicho formulario y quiero activar a BtnSalir; para lo cual hago :

    Form1 menu = new Form1();

    enu.PictureBox1.Enabled = True;   --  no es accesible debido a su nivel de protección


    Pero no me deja abirlo modal porque muestro a compras dentro del form 1 en un panel central.

     

    miércoles, 5 de agosto de 2020 15:55
  • Hola Eric, apenas contesté. Aún no resuelvo el tema por lo que acabo de exponer a Tigre Pablito.

    Gracias

    miércoles, 5 de agosto de 2020 15:56
  • Hola olvidé decirte que tampoco me deja abrirlo como show(this)
    miércoles, 5 de agosto de 2020 15:58
  • Hola

    Entonces hace esto:

    En el form hijo agrega un miembro de clase de tipo form padre. Cuando creas el form hijo le asignas a esa variable la referencia al form padre (this). Luego en el form hijo accedes al pictureBox (que lo tenes que declarar public en el form padre) a través de esa variable.

    Saludos

    • Marcado como respuesta Claudia_CA lunes, 17 de agosto de 2020 18:23
    miércoles, 5 de agosto de 2020 22:05
  • Muchas gracias por el apoyo. Me ha servido para encontrar la solución.

    Saludos

    lunes, 17 de agosto de 2020 18:22