Comunicar formulario hijo con padre

publicado por: Anonymous

Estoy trabajando en una app windows forms en la cual quiero comunicar un formulario hijo con un formulario padre.
La implementación que tengo para este proposito es la siguiente:

Interfaz

public interface IActualizarDGVPrincipal
{
    void AcualizarDGV();
}

Esta interfaz la implemento en el formulario padre, que viene a ser mi formulario MDI.

El método es llamado desde el formulario hijo, que es un user control:

public IActualizarDGVPrincipal Opener { get; set; }

private void Actualizar()
    {
        Opener.AcualizarDGV();        
    }

Al momento de llamar al método me da error de referencia a objeto no establecida como instancia de un objeto.

Estoy usando ninject, y llamo al formulrio hijo desde el padre de la siguiente manera:

private void btnMenuCategoria_Click(object sender, EventArgs e)
    {
        ActivarTitulos(true, strSubCategoria.nameEntity);
        var argCall = new ConstructorArgument("this", this);

        var categoria = CompositionRoot.Resolve<ucCategoria>(argCall);
        categoria.DGVCategoria += Categoria_DGVCategoria;
        categoria.DGVSubCategoria += Categoria_DGVSubCategoria;
        categoria.CategoriaClose += Categoria_CategoriaClose;
        this.CurrentControl = categoria;

        CargarDGVPrincipal(AsignacionTablas.SubCategoria);
    }

Es allí donde debo pasarle el parámetro instanciado para no tener problemas en el formulario hijo cuando lo llamo. ¿Alguna sugerencia para solucionarlo?

solución

Lo solucioné de la siguiente manera:

private void btnMenuCategoria_Click(object sender, EventArgs e)
{
    ActivarTitulos(true, strSubCategoria.nameEntity);
    var categoria = CompositionRoot.Resolve<ucCategoria>();
    *categoria.Opener = this; ==> Esto era todo.*
    categoria.DGVCategoria += Categoria_DGVCategoria;
    categoria.DGVSubCategoria += Categoria_DGVSubCategoria;
    categoria.CategoriaClose += Categoria_CategoriaClose;
    this.CurrentControl = categoria;

    CargarDGVPrincipal(AsignacionTablas.SubCategoria);
}
Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *