jueves, 1 de noviembre de 2012

Pasar datos desde un DataGridView a otro formulario y llenar sus Texbox.

 

Un tema muy seguido y utilizado por muchos programadores y principiantes que se les dificulta
pasar datos a otro formulario desde un DataGridView .

En está oportunidad les voy a enseñar como pasar estos valores a un segundo formulario y
también que estos se almacenen en algunos texbox.

Lo primero que debemos de hacer es arrastrar desde el Cuadro de de herramientas nuestro
control DataGridView luego dirigirnos a un evento del DataGridView llamado CellDoubleClick este lo que hace es que cuando usted de doble click en la grilla de los datos cargados
ejecutara esa función, por eso haremos nuestro procedimiento en este evento.

A continuación el método a utilizar:

image

En la imagen podemos observar que lo primero que hacemos es crear una instancia del formulario que tienen nuestros texbox y estos deben de estar public para poder acceder a ellos lo siguiente es es crear un ciclo con un foreach donde creamos un variable de tipo Form y donde este se verificara cuando el formulario este abierto para ejecutar el método que contiene dentro de el, luego hacemos una decisión que esta nos ayudara a comparar que el nombre de nuestro formulario que instanciamos es el correcto, si es de esa manera se ejecuta el método donde se le pasa la información al formulario 2 y este posteriormente por medio de Frm2 que es nuestra instancia creada utiliza los texbox y le asigna a estos la posición de nuestras celdas del DataGridView que es donde está cargada la información de nuestra BD.

El ultimo paso seria cerrar nuestro formulario y romper el ciclo foreach con el break.

Espero que les allá servido de ayuda.

23 comentarios:

  1. hola como aria en mi caso me sale Private sub .... y no lo reconoce

    ResponderEliminar
  2. Me parece que no estas en el evento correspondiente , revisa bien la ruta que describo y cualquier cosa me haces saber. suerte!!

    ResponderEliminar
  3. Hola me aparece un error de No se puede convertir el tipo 'ProyectoLink1.MenuPrincipal' te dejo el codigo:

    private void dataGridView1_CellContentDoubleClick(object sender, DataGridViewCellEventArgs e)
    {
    try
    {
    VentanaTextBoxLink TextBox = new VentanaTextBoxLink();
    foreach (MenuPrincipal Menu in Application.OpenForms)
    {
    if (Menu.Name == "VentanaTextBoxLink")
    {
    TextBox = (VentanaTextBoxLink)Menu;
    TextBox.txtCopiaLink.Text = dataGridView1.CurrentRow.Cells[0].Value.ToString();
    this.Close();
    break;
    }
    }
    }
    catch (Exception ex)
    {
    MessageBox.Show(ex.Message);
    }
    }

    El error esta en la fila 10 que es esta: TextBox = (VentanaTextBoxLink)Menu;

    Por favor ayuda.........

    ResponderEliminar
  4. Aclaro que MenuPrincipal es el form donde tengo el datagridview y ventanaTextBox es la ventana que se abrira con el textBox.

    ResponderEliminar
  5. como coloco las cajas de texto en PUBLIC...
    no me reconoce al momento de querer pasar la variable
    gracias

    ResponderEliminar
  6. cambia la propiedad Modifiers a public en el formulario que tienes los textbox
    y eso seria todo, asi las reconocera

    ResponderEliminar
  7. mr eres un genio, estaba atorado en este problemita

    ResponderEliminar
  8. Hola, ¿oye y si quiero hacer el proceso inverso? ¿Pasar datos de un combobox a un datagridview en diferentes ventanas? Podrías ayudarme por favor? Te lo agradecería

    ResponderEliminar
  9. EL PRIMER ERROR ME SALE AQUI: Frm2 = (CuenCobrar2); --> ES TIPO PERO SE UTILIZA COMO VARIABLE
    EL SEGUNDO ERROR ME SALE AQUI: Frm2.TxtIdDoc.Text = NO ES ACCESIBLE DEBIDO A SU NIVEL DE PROTECCION

    TE AGRADECERIA MUCHO SI ME DAS UNA MANO CON ESTO

    private void DgvCuencobrar_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
    {
    try
    {
    CuenCobrar2 Frm2 = new CuenCobrar2();
    foreach (CuenCobrar frm in Application.OpenForms)
    {
    if (frm.Name == "CuenCobrar2")
    {
    Frm2 = (CuenCobrar2);
    Frm2.TxtIdDoc.Text = DgvCuencobrar.CurrentRow.Cells[0].Value.ToString();
    this.Close();
    break;
    }
    }
    }
    catch (Exception ex)
    {
    MessageBox.Show(ex.Message);
    }
    }
    }
    }

    ResponderEliminar
  10. MUCHAS GRACIAS BROTHER ME SIRVIO MUCHO, EN SERIO GRACIAS!!!

    ResponderEliminar
  11. si tienes un canal en youtube porfa pasame tu link

    ResponderEliminar
  12. como resolver lo del nivel de proteccion?
    me da ese error no me deja acceder al texbox del otro form

    ResponderEliminar
  13. Al momento de llamar al formulario k contiene el grid Y si esta vacío da error como controlo esta excepción Ya intente haciendo datagrid.rows. count >0 pero no controla

    ResponderEliminar
  14. Graciass!! Me sirvió!! pase ratos intentando hacer esto

    ResponderEliminar
  15. Graciaaassssss!!! jajaja Si fuera rico te enviaria mucho dinero!!!! tienes canal en Youtube?

    ResponderEliminar
  16. tenia 5 horas leyendo foros e intentando y nada me funcionaba, gracias totales, esto si funciona correctamente y sin tanto rollo,

    ResponderEliminar
  17. we sos un genio papa, Mientras otros hacen 10000 lineas de codigo para hacer lo mismo tu solo 5 resuelto esta vaina

    ResponderEliminar
  18. Excelente aporte y la manera mas simplificada que encontre en la red después de horas, gracias!

    ResponderEliminar
  19. Gracias Amigo, me ayudaste en mucho. :)

    ResponderEliminar
  20. Gracias a todos por sus comentarios, sí alguien aún presenta alguna dificultad dejarme saber. Hasta Luego!

    ResponderEliminar
  21. Hola amigo, como podría hacer para que en vez de que tenga que estar abierto el formulario, que me lo abra automaticamente? Saludos, muy buen artículo!

    ResponderEliminar