none
Consulta instancias de formularios RRS feed

  • Pregunta

  • Hola buenas noches , les escribo para consultarles:

    Tengo 2 formularios , el primero se llama FrmVenta y cuando apretó en el botón que dice "Agregar Producto" llama al form FrmAgregarProducto donde eligo el producto y me vuelve al FrmVenta y el producto se agrega en el GridView del FrmVenta.

    En el FrmVenta: 

                    

     private void buttonAgregarProducto_Click(object sender, EventArgs e)
            {
                FrmAgregarProductoVenta AgregarProductoVenta=new FrmAgregarProductoVenta();

                AgregarProductoVenta.ShowDialog();

            }

    y en el FrmAgregarProductoVenta:

               

     private void buttonProductoElegido_Click(object sender, EventArgs e)
            {
                FrmVenta f = new FrmVenta();
                f.mandardatos(Convert.ToString(ObtenerSeleccion().Cells["Id"].Value), Convert.ToString(ObtenerSeleccion().Cells["Descripción"].Value));

    this.Close();

                f.Show();
            }

    ------------------------------------------

    El problema básicamente es que se crean nuevas instancias del formulario Venta, yo quiero que quede una solamente.

    Desde ya muchas gracias saludos


    kechu

    miércoles, 18 de noviembre de 2015 0:18

Respuestas

  • Tienes diferentes opciones. Una es la que comenta José.

    Te cuento cómo lo haría yo:

    1. Crea una propiedad ProductoSeleccionado en el formulario FrmAgregarProductoVenta en la que devolverás el producto seleccionado en el diálogo:

    public KeyValuePair<string,string> ProductoSeleccionado { get; set; }


    2. En el botón de selección estableces el valor de la propiedad ProductoSeleccionado con el producto y el DialogResult con Ok:

            private void buttonProductoElegido_Click(object sender, EventArgs e)
            {
                ProductoSeleccionado = new KeyValuePair<string, string>((string) ObtenerSeleccion().Cells["Id"].Value,
                    (string) ObtenerSeleccion().Cells["Descripción"].Value);
                DialogResult= DialogResult.OK;
            }

    3. En la llamada al diálogo no tienes más que comprobar el resultado de DialogResult y obtener el producto de la nueva propiedad:

                FrmAgregarProductoVenta AgregarProductoVenta = new FrmAgregarProductoVenta();
    
                if (AgregarProductoVenta.ShowDialog() == DialogResult.OK)
                {
                    mandardatos(AgregarProductoVenta.ProductoSeleccionado.Key, AgregarProductoVenta.ProductoSeleccionado.Value);
                }


    Píldoras .NET
    Artículos, tutoriales y ejemplos de código .NET

    Píldoras JS
    Artículos, tutoriales y ejemplos de código JavaScript, HTML5, CSS3, ...


    • Editado Asier Villanueva miércoles, 18 de noviembre de 2015 8:37
    • Marcado como respuesta kechuone viernes, 27 de noviembre de 2015 22:07
    miércoles, 18 de noviembre de 2015 8:37

Todas las respuestas

  • Deleted
    miércoles, 18 de noviembre de 2015 7:11
  • Tienes diferentes opciones. Una es la que comenta José.

    Te cuento cómo lo haría yo:

    1. Crea una propiedad ProductoSeleccionado en el formulario FrmAgregarProductoVenta en la que devolverás el producto seleccionado en el diálogo:

    public KeyValuePair<string,string> ProductoSeleccionado { get; set; }


    2. En el botón de selección estableces el valor de la propiedad ProductoSeleccionado con el producto y el DialogResult con Ok:

            private void buttonProductoElegido_Click(object sender, EventArgs e)
            {
                ProductoSeleccionado = new KeyValuePair<string, string>((string) ObtenerSeleccion().Cells["Id"].Value,
                    (string) ObtenerSeleccion().Cells["Descripción"].Value);
                DialogResult= DialogResult.OK;
            }

    3. En la llamada al diálogo no tienes más que comprobar el resultado de DialogResult y obtener el producto de la nueva propiedad:

                FrmAgregarProductoVenta AgregarProductoVenta = new FrmAgregarProductoVenta();
    
                if (AgregarProductoVenta.ShowDialog() == DialogResult.OK)
                {
                    mandardatos(AgregarProductoVenta.ProductoSeleccionado.Key, AgregarProductoVenta.ProductoSeleccionado.Value);
                }


    Píldoras .NET
    Artículos, tutoriales y ejemplos de código .NET

    Píldoras JS
    Artículos, tutoriales y ejemplos de código JavaScript, HTML5, CSS3, ...


    • Editado Asier Villanueva miércoles, 18 de noviembre de 2015 8:37
    • Marcado como respuesta kechuone viernes, 27 de noviembre de 2015 22:07
    miércoles, 18 de noviembre de 2015 8:37
  • Muchas gracias por las 2 respuestas ya lo pude resolver con un tutorial de leandro tunini , les dejo el link por las dudas: es mediante el uso de interfaces: http://ltuttini.blogspot.com.ar/2009/09/c-comunicar-formularios-de-forma.html

    no se si sera la mejor forma pero anda perfecto, saludos y gracias nuevamente


    kechu

    viernes, 27 de noviembre de 2015 22:07