none
Comunicación entre formularios C# RRS feed

  • Pregunta

  • Saludos.

    Tengo un formulario principal donde tiene unos botones, adicional contiene un Panel donde se abren formularios según los clic que se de en los botones.  Mi dificultad es que en el Panel se carga un formulario que debe habilitar los botones del formulario principal. Es decir: del formulario que está en el contenedor (Panel), haga clic en un botón, y aparezca o desaparezca los botones que existen en el Formulario que contiene los botones y el panel contenedor.

    Como podría comunicar el formulario del panel para que ejecute funciones del panel principal.

    Intenté comunicar los formularios de forma desacoplada pero me dice que es nula la referencia, usando el instructivo de Leandro Tuttini, o quizás estoy haciendo algo mal.

     

    IForm formInterface = this.Owner as IForm;
    if (formInterface != null)
    {
         formInterface.cambioEstado(true);
    }

    Mi problema al parecer es en la primera línea "IForm formInterface = this.Owner as IForm". No se me ocurre como reemplazar el this por el formulario que contiene todos los controles.

    Gracias por la ayuda.

    martes, 24 de septiembre de 2019 17:56

Todas las respuestas

  • hola

    >>No se me ocurre como reemplazar el this por el formulario que contiene todos los controles.

    es que NUNCA deberias hacer eso, tampoco acceder a los botones directo desde un form al otro

    sino que desde el form que contiene los botones, el cual imagino deberias implementar la interface IForm, exponer un metodo que puedas invocar

    es por medio del contrato de la interface que realizas las acciones en el otro form

    si necesitas que se habiliten botones podria ser

    interface IForm{

        void HabilitarBotones();

    }

    implementas ese metodo en el form que tiene los botones, seria el form padre

    y desde el form hijo lo invocas tomando la instancia desde el Owner

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    martes, 24 de septiembre de 2019 19:16
  • Gracias por responder.

    Justamente tengo así, pero el programa me devuelve:

    No se puede agregar un control de nivel superior a un control.

    Que puedo hacer en esos casos.

    El formulario se abre en un control que está en otro formulario que es como el menú. No uso MDI.

    Gracias.

    martes, 24 de septiembre de 2019 19:36