none
Pasar datos de datagridview a textbox En otro formulario C# RRS feed

  • Pregunta

  • Buen día.

    Tengo un Formulario principal (frmProducto) con algunas cajas de texto y un botón , este botón abre un formulario showdialog (frmListaCategorias) que tiene un datagridview con categorías. La pregunta es ¿como hacer que ,  al dar dobleclick sobre una fila en el datagridview , estos registros se pasen a los textbox del  frmProducto.


    • Editado Luis_R_ jueves, 5 de mayo de 2016 23:11
    jueves, 5 de mayo de 2016 23:08

Respuestas

  • Hola,

    Puedes enviar el form padre (frmProducto), como parámetro al abrir el ShowDialog().

    - Al abrir el diálogo :

    frmListaCategorias fcat = new frmListaCategorias(this);
    fcat .ShowDialog();


    Y en el frmListaCategorias, tienes que crear el constructor :

            //Variable que guardará el form
            private frmProducto padre;
    
            public frmListaCategorias(frmProducto parametro)
            {
                InitializeComponent();
    
                //Asigno el parámetro a mi variable
                padre = parametro;
            }
    
            private void dataGridView1_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
            {
                padre.textBox1.Text = dataGridView1.CurrentRow.Cells[0].Value.ToString();
            }

    Pero por defecto los controles son creados privados, cámbialos a públicos.

    Saludos.



    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    • Marcado como respuesta Luis_R_ viernes, 6 de mayo de 2016 19:58
    jueves, 5 de mayo de 2016 23:39

Todas las respuestas

  • Para responderle apropiadamente le pregunto:  ¿Cómo llena el DGV?  ¿Vinculación a datos o manualmente?  Si es vinculación a datos, ¿qué tipo de colección utiliza?

    Jose R. MCP
    Code Samples

    jueves, 5 de mayo de 2016 23:37
    Moderador
  • Hola,

    Puedes enviar el form padre (frmProducto), como parámetro al abrir el ShowDialog().

    - Al abrir el diálogo :

    frmListaCategorias fcat = new frmListaCategorias(this);
    fcat .ShowDialog();


    Y en el frmListaCategorias, tienes que crear el constructor :

            //Variable que guardará el form
            private frmProducto padre;
    
            public frmListaCategorias(frmProducto parametro)
            {
                InitializeComponent();
    
                //Asigno el parámetro a mi variable
                padre = parametro;
            }
    
            private void dataGridView1_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
            {
                padre.textBox1.Text = dataGridView1.CurrentRow.Cells[0].Value.ToString();
            }

    Pero por defecto los controles son creados privados, cámbialos a públicos.

    Saludos.



    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    • Marcado como respuesta Luis_R_ viernes, 6 de mayo de 2016 19:58
    jueves, 5 de mayo de 2016 23:39
  • Perdón , debí ser más específico .

    Lo estoy llenando desde una BD.

    en el formulario donde tengo el listado de categorías estoy capturando lo que tengo en el dgv, por  ejemplo :

    private void dgvListado_DoubleClick(object sender, EventArgs e)
            {
                string idcategoria = Convert.toString(dgvListado.CurrentRow.Cells["idcategoria"].Value);
                string nombrecategoria = Convert.toString(dgvListado.CurrentRow.Cells["nombrecategoria"].Value);
            }

     Lo que no sé es como regresar esas variables al formulario previo
    jueves, 5 de mayo de 2016 23:45
  • Ok, viera que uno puede leer los datos desde la base de datos y aún así llenar el DGV manualmente.  Le hago una nueva pregunta:  ¿Usa la propiedad DataSource del DGV?  Si es así, ¿qué tipo de objeto le asigna?

    Jose R. MCP
    Code Samples

    jueves, 5 de mayo de 2016 23:47
    Moderador
  • Hola José , el objeto es un DataTable.
    Por si fuese necesario dejo más detalles.

    Este es el método que uso en el form principal  

    private void Mostrar()
            {
                NArticulo nart = new NArticulo();
                dgvListado.DataSource = nart.Mostrar();
                lblTotal.Text = "Total de registros " + dgvListado.Rows.Count;
            }

    y en la clase NArticulo tengo esto

    ArticuloDAO artDAO = new ArticuloDAO();
    
    public DataTable Mostrar()
            {
                return artDAO.Mostrar();
            }

    y en la capa donde acceso a los datos

    public DataTable Mostrar() { DataTable dtArticulo = new DataTable("articulo"); try { using (SqlConnection con = new SqlConnection(Conexion.Cn)) { SqlCommand command = new SqlCommand("spMostrar_articulo", con); command.CommandType = CommandType.StoredProcedure; SqlDataAdapter adapter = new SqlDataAdapter(command); adapter.Fill(dtArticulo); } } catch { throw; } return dtArticulo; }

    viernes, 6 de mayo de 2016 0:37
  • Hola Joel , voy a hacer lo que me has comentado. Gracias de antemano
    viernes, 6 de mayo de 2016 0:38
  • Muchas gracias, esto me sirvio!
    jueves, 20 de junio de 2019 20:19