none
Poner datos en diferentes textbox dando click en un datagrid RRS feed

  • Pregunta

  • Buenos dias 

    De ante mano muchas gracias, paso por aquí para ver si por favor me pueden ayudar con una consulta.

    Tengo un form en el que tengo 3 lineas de 4 textbox, 2 checkbox y un datagrid.

    por default la primera linea de textbox al iniciar el form esta visible pero las otras 2 lineas no, esas se podrán hacer visible al darle a su respectivo checkbox.

    Necesito que cuando le des click al datagrid se ponga en la primera linea (eso ya lo logre)

    Private Sub DataGridView1_CellDoubleClick(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView1.CellDoubleClick
            Try
                currentRow = CType((e.RowIndex.ToString()), Integer) ''Obtiene la fila actual
                idd = Convert.ToString(DataGridView1(0, currentRow).Value)
                TextBox3.Text = Convert.ToString(DataGridView1(1, currentRow).Value)
                textbox1.Text = Convert.ToString(DataGridView1(2, currentRow).Value)
                textbox2.Text = Convert.ToString(DataGridView1(3, currentRow).Value)

    y que al seleccionar el checKbox1 se visualice la segunda linea de textbox (ya también lo pude lograr)

     If CheckBox1.Checked = True Then
                TextBox3.Visible = True
                TextBox2.Visible = True
                TextBox1.Visible = True

    La situación esta en que cuando le vuelvo a dar dobble click en el datagrid para que me pase los datos a la segunda linea de textbox me cambia la primera también.

    Como puedo hacer para que la primera linea se quede con la ya la info seleccionada al dar click al datagrid habilitando las otras lineas?

    Por favor si me pueden orientar un poco de como hacerlo.

    este es el código que tengo

     

    Private Sub DataGridView1_CellDoubleClick(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView1.CellDoubleClick
            Try

                currentRow = CType((e.RowIndex.ToString()), Integer) ''Obtiene la fila actual
                idd = Convert.ToString(DataGridView1(0, currentRow).Value)
                TextBox3.Text = Convert.ToString(DataGridView1(1, currentRow).Value)
                TextBox1.Text = Convert.ToString(DataGridView1(2, currentRow).Value)
                TextBox2.Text = Convert.ToString(DataGridView1(3, currentRow).Value)
                If CheckBox1.Checked = True Then
                    TextBox4.Text = Convert.ToString(DataGridView1(1, currentRow).Value)
                    TextBox5.Text = Convert.ToString(DataGridView1(2, currentRow).Value)
                    TextBox6.Text = Convert.ToString(DataGridView1(3, currentRow).Value)

                Else
                End If
            Catch ex As Exception

            End Try
        End Sub

    martes, 26 de junio de 2018 15:23

Respuestas

  • "Yayimilteh" preguntó:

    > Como puedo hacer para que la primera linea se quede con la ya la info
    > seleccionada al dar click al datagrid habilitando las otras lineas?

    Hola:

    En principio te diría que escribas en los controles TextBox de la primera línea SOLAMENTE cuando aquellos de la segunda línea no estén visibles, es decir, cuando el valor CheckBox1.Checked sea False:

       Private Sub DataGridView1_CellDoubleClick(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView1.CellDoubleClick
    
            Try
                currentRow = CType((e.RowIndex.ToString()), Integer) ''Obtiene la fila actual
                idd = Convert.ToString(DataGridView1(0, currentRow).Value)
                
                If (Not CheckBox1.Checked) Then
                    ' Escribir en los controles de la primera línea.
                    TextBox3.Text = Convert.ToString(DataGridView1(1, currentRow).Value)
                    TextBox1.Text = Convert.ToString(DataGridView1(2, currentRow).Value)
                    TextBox2.Text = Convert.ToString(DataGridView1(3, currentRow).Value)
    
                Else
                    ' Escribir en los controles de la segunda línea.
                    TextBox4.Text = Convert.ToString(DataGridView1(1, currentRow).Value)
                    TextBox5.Text = Convert.ToString(DataGridView1(2, currentRow).Value)
                    TextBox6.Text = Convert.ToString(DataGridView1(3, currentRow).Value)
    
                End If
    
            Catch ex As Exception
    
            End Try
    
        End Sub

    Un saludo


    Enrique Martínez Montejo
    [MS MVP - Visual Studio y Tecnologías de Desarrollo]

    Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.

    Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.

    Si usas Visual Basic .NET y deseas ser productivo y feliz, se inteligente y activa la instrucción
    Option Strict.

    • Marcado como respuesta Yayimilteh martes, 26 de junio de 2018 16:11
    martes, 26 de junio de 2018 15:33
    Moderador
  • "Yayimilteh" preguntó:

    > ... como seria codificar para las demás lineas me faltaría 2 lineas
    > mas que serian también habilitarlas con los checkbox.

    Para no sobrescribir el contenido de las restantes líneas de controles, tendrías que ejecutar lo siguiente:

        Private Sub DataGridView1_CellDoubleClick(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView1.CellDoubleClick
    
            Try
                currentRow = CType((e.RowIndex.ToString()), Integer) ''Obtiene la fila actual
                idd = Convert.ToString(DataGridView1(0, currentRow).Value)
    
                If ((CheckBox1.Checked) And (Not CheckBox2.Checked) And (Not CheckBox3.Checked)) Then
                    ' Escribir en los controles de la segunda línea.
                    TextBox4.Text = Convert.ToString(DataGridView1(1, currentRow).Value)
                    TextBox5.Text = Convert.ToString(DataGridView1(2, currentRow).Value)
                    TextBox6.Text = Convert.ToString(DataGridView1(3, currentRow).Value)
    
                ElseIf ((Not CheckBox1.Checked) And (CheckBox2.Checked) And (Not CheckBox3.Checked)) Then
                    ' Escribir en los controles de la tercera línea.
                    ' tercera línea: textbox6, textbox7, textbox8, habilita checkbox2
    
                ElseIf ((Not CheckBox1.Checked) And (Not CheckBox2.Checked) And (CheckBox3.Checked)) Then
                    ' Escribir en los controles de la cuarta línea.
                    ' cuarta linea: textbox9, textbox10, textbox11, habilita checkbox3
    
                Else
                    ' Escribir en los controles de la primera línea.
                    TextBox3.Text = Convert.ToString(DataGridView1(1, currentRow).Value)
                    TextBox1.Text = Convert.ToString(DataGridView1(2, currentRow).Value)
                    TextBox2.Text = Convert.ToString(DataGridView1(3, currentRow).Value)
    
                End If
    
            Catch ex As Exception
    
            End Try
    
        End Sub

    Espero que no te equivoques con CheckBoxTT.Checked (True) y Not CheckBoxTT.Checked (False).

    Ahora bien, si tu intención es escribir en los controles TextBox de la línea correspondiente a su control CheckBox, entonces lo mismo te sirve lo siguiente:

                If ((Not CheckBox1.Checked) And (Not CheckBox2.Checked) And (Not CheckBox3.Checked)) Then
                    ' Si ningún control CheckBox está marcado, escribir en los controles de la primera línea.
                    
                End If
    
                If (CheckBox1.Checked) Then
                    ' Si el primer control CheckBox está marcado, escribir en los controles de la segunda línea.
                    
                End If
    
                If (CheckBox2.Checked) Then
                    ' Si el segundo control CheckBox está marcado, escribir en los controles de la tercera línea.
                    
                End If
    
                If (CheckBox3.Checked) Then
                    ' Si el cuarto control CheckBox está marcado, escribir en los controles de la cuarta línea.
                    
                End If

    Si por casualidad tienes más líneas de controles TextBox, lo único que tienes que hacer es aplicar lo comentado.

    Un saludo


    Enrique Martínez Montejo
    [MS MVP - Visual Studio y Tecnologías de Desarrollo]

    Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.

    Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.

    Si usas Visual Basic .NET y deseas ser productivo y feliz, se inteligente y activa la instrucción
    Option Strict.





    martes, 26 de junio de 2018 16:31
    Moderador

Todas las respuestas

  • "Yayimilteh" preguntó:

    > Como puedo hacer para que la primera linea se quede con la ya la info
    > seleccionada al dar click al datagrid habilitando las otras lineas?

    Hola:

    En principio te diría que escribas en los controles TextBox de la primera línea SOLAMENTE cuando aquellos de la segunda línea no estén visibles, es decir, cuando el valor CheckBox1.Checked sea False:

       Private Sub DataGridView1_CellDoubleClick(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView1.CellDoubleClick
    
            Try
                currentRow = CType((e.RowIndex.ToString()), Integer) ''Obtiene la fila actual
                idd = Convert.ToString(DataGridView1(0, currentRow).Value)
                
                If (Not CheckBox1.Checked) Then
                    ' Escribir en los controles de la primera línea.
                    TextBox3.Text = Convert.ToString(DataGridView1(1, currentRow).Value)
                    TextBox1.Text = Convert.ToString(DataGridView1(2, currentRow).Value)
                    TextBox2.Text = Convert.ToString(DataGridView1(3, currentRow).Value)
    
                Else
                    ' Escribir en los controles de la segunda línea.
                    TextBox4.Text = Convert.ToString(DataGridView1(1, currentRow).Value)
                    TextBox5.Text = Convert.ToString(DataGridView1(2, currentRow).Value)
                    TextBox6.Text = Convert.ToString(DataGridView1(3, currentRow).Value)
    
                End If
    
            Catch ex As Exception
    
            End Try
    
        End Sub

    Un saludo


    Enrique Martínez Montejo
    [MS MVP - Visual Studio y Tecnologías de Desarrollo]

    Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.

    Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.

    Si usas Visual Basic .NET y deseas ser productivo y feliz, se inteligente y activa la instrucción
    Option Strict.

    • Marcado como respuesta Yayimilteh martes, 26 de junio de 2018 16:11
    martes, 26 de junio de 2018 15:33
    Moderador
  • waoo Muchas gracias Enrique me funciona muy bien, otra consulta y disculpa  como seria codificar para las demás lineas me faltaría 2 lineas mas que serian también habilitarlas con los checkbox.

    tercera linea: textbox6, textbox7, textbox8, habilita checbox2

    cuarta linea: textbox9, textbox10, textbox11, habilita checbox3

    disculpa las molestias pero apenas estoy en mis pininos.

    martes, 26 de junio de 2018 16:09
  • "Yayimilteh" preguntó:

    > ... como seria codificar para las demás lineas me faltaría 2 lineas
    > mas que serian también habilitarlas con los checkbox.

    Para no sobrescribir el contenido de las restantes líneas de controles, tendrías que ejecutar lo siguiente:

        Private Sub DataGridView1_CellDoubleClick(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView1.CellDoubleClick
    
            Try
                currentRow = CType((e.RowIndex.ToString()), Integer) ''Obtiene la fila actual
                idd = Convert.ToString(DataGridView1(0, currentRow).Value)
    
                If ((CheckBox1.Checked) And (Not CheckBox2.Checked) And (Not CheckBox3.Checked)) Then
                    ' Escribir en los controles de la segunda línea.
                    TextBox4.Text = Convert.ToString(DataGridView1(1, currentRow).Value)
                    TextBox5.Text = Convert.ToString(DataGridView1(2, currentRow).Value)
                    TextBox6.Text = Convert.ToString(DataGridView1(3, currentRow).Value)
    
                ElseIf ((Not CheckBox1.Checked) And (CheckBox2.Checked) And (Not CheckBox3.Checked)) Then
                    ' Escribir en los controles de la tercera línea.
                    ' tercera línea: textbox6, textbox7, textbox8, habilita checkbox2
    
                ElseIf ((Not CheckBox1.Checked) And (Not CheckBox2.Checked) And (CheckBox3.Checked)) Then
                    ' Escribir en los controles de la cuarta línea.
                    ' cuarta linea: textbox9, textbox10, textbox11, habilita checkbox3
    
                Else
                    ' Escribir en los controles de la primera línea.
                    TextBox3.Text = Convert.ToString(DataGridView1(1, currentRow).Value)
                    TextBox1.Text = Convert.ToString(DataGridView1(2, currentRow).Value)
                    TextBox2.Text = Convert.ToString(DataGridView1(3, currentRow).Value)
    
                End If
    
            Catch ex As Exception
    
            End Try
    
        End Sub

    Espero que no te equivoques con CheckBoxTT.Checked (True) y Not CheckBoxTT.Checked (False).

    Ahora bien, si tu intención es escribir en los controles TextBox de la línea correspondiente a su control CheckBox, entonces lo mismo te sirve lo siguiente:

                If ((Not CheckBox1.Checked) And (Not CheckBox2.Checked) And (Not CheckBox3.Checked)) Then
                    ' Si ningún control CheckBox está marcado, escribir en los controles de la primera línea.
                    
                End If
    
                If (CheckBox1.Checked) Then
                    ' Si el primer control CheckBox está marcado, escribir en los controles de la segunda línea.
                    
                End If
    
                If (CheckBox2.Checked) Then
                    ' Si el segundo control CheckBox está marcado, escribir en los controles de la tercera línea.
                    
                End If
    
                If (CheckBox3.Checked) Then
                    ' Si el cuarto control CheckBox está marcado, escribir en los controles de la cuarta línea.
                    
                End If

    Si por casualidad tienes más líneas de controles TextBox, lo único que tienes que hacer es aplicar lo comentado.

    Un saludo


    Enrique Martínez Montejo
    [MS MVP - Visual Studio y Tecnologías de Desarrollo]

    Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.

    Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.

    Si usas Visual Basic .NET y deseas ser productivo y feliz, se inteligente y activa la instrucción
    Option Strict.





    martes, 26 de junio de 2018 16:31
    Moderador
  • Muchas gracias Enrique me funciono excelentemente bien!!
    martes, 26 de junio de 2018 18:16