none
Problemas con un TextBox RRS feed

  • Pregunta

  • Buen día estoy programando y me surge una situación, ya he realizado un programa como el que estoy volviendo a realizar y no habia tenido problemas, desde un windows form abro otro formulario para una busqueda y al momento de encontrar el resultado le doy doble click para que me regrese los datos encontrados al primer form. Lo hago a través de una funcion que me deberia de llenar los TextBox seleccionados, ya incluso copie el código de mi programa anterior pero no funciona, los TextBox se quedan en blanco, para comprobar que el segundo formulario si me daba los datos, puse un mensaje en el primer formulario para que me mandara una ventana con los datos y si van completos, el problema es que cuando utilizo el TextBox1.Text = param1 no lo actualiza, les adjunto los dos codigos involucrados y que me ayuden a ver si algo estoy pasando por alto.

    Este es el código que me envia los datos del formulario 2 al 1

    Private Sub dataGridView1_CellDoubleClick(sender As System.Object, e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellDoubleClick
    
            Dim row As DataGridViewRow = DataGridView1.Rows(e.RowIndex)
    
            nuevaorden.LlenarOrden(CStr(row.Cells("CLAVE").Value), CStr(row.Cells("NOMBRE").Value), CStr(row.Cells("CAMPLIB3").Value), CStr(row.Cells("CAMPLIB2").Value), CStr(row.Cells("STATUS").Value))
            Me.Close()
    
        End Sub

    Este es el código del formulario 1 que deberia actualizar los TextBox

     Public Sub LlenarOrden(param1, param2, param3, param4, param5)
    
            TextBox3.Text = param1
            TextBox4.Text = param2
            TextBox2.Text = param3
            TextBox1.Text = param4
    
            semaforo.Image = Image.FromFile("C:\RED\ORDENES\" & param5 & ".png")
    
    
        End Sub

    agradezco su ayuda


    DESDE EL FORO DE MSDN

    viernes, 24 de junio de 2016 20:45

Respuestas

  • Hola FedericoHH,

    Que es eso de nuevaOrden.LlenarOrden.... ? Como lo declaras?

    Puedes hacer esto :

     Private Sub DataGridView1_CellDoubleClick(sender As Object, e As DataGridViewCellEventArgs) _
             Handles DataGridView1.CellDoubleClick
    
            Dim row As DataGridViewRow = DataGridView1.Rows(e.RowIndex)
    
            'Obtengo la instancia del padre
            Dim f1 As Form1 = Application.OpenForms.OfType(Of Form1).SingleOrDefault()
    
            If f1 IsNot Nothing Then
                f1.LlenarOrden(CStr(row.Cells("CLAVE").Value),
                               CStr(row.Cells("NOMBRE").Value),
                               CStr(row.Cells("CAMPLIB3").Value),
                               CStr(row.Cells("CAMPLIB2").Value),
                               CStr(row.Cells("STATUS").Value))
            End If
    
            Me.Close()
    
        End Sub

    Con esto obtienes la instancia actual del Form1 que abrió al Form2 y accedes a su método.

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    • Marcado como respuesta FedericoHH viernes, 24 de junio de 2016 22:39
    viernes, 24 de junio de 2016 21:27

Todas las respuestas

  • Y si pruebas lo siguiente: 

    Formulario en el que esta el Grid

    Dato1 = DataGridView1.CurrentRow.Cells(0).EditedFormattedV alue.ToString
    Dato2 = DataGridView1.CurrentRow.Cells(1).EditedFormattedV alue.ToString
    Dato3 = DataGridView1.CurrentRow.Cells(2).EditedFormattedV alue.ToString


    Formulario donde estan los Text

    TextBox1.Text = Dato1
    TextBox2.Text = Dato2
    TextBox3.Text = Dato3

    Solo creas un modulo y defines las variables publicas

    Dim Dato1, Dato2, Dato3 As String
    


    Jhonatan Plata http://kayprogramacion.blogspot.com/

    viernes, 24 de junio de 2016 21:06
  • Ya realice una prueba pero pasa lo mismo.

    Ahorita con una función que tengo dentro del mismo formulario para otra cosa diferente si los puedo actualizar, solo en ese caso no. 


    DESDE EL FORO DE MSDN

    viernes, 24 de junio de 2016 21:12
  • Hola FedericoHH,

    Que es eso de nuevaOrden.LlenarOrden.... ? Como lo declaras?

    Puedes hacer esto :

     Private Sub DataGridView1_CellDoubleClick(sender As Object, e As DataGridViewCellEventArgs) _
             Handles DataGridView1.CellDoubleClick
    
            Dim row As DataGridViewRow = DataGridView1.Rows(e.RowIndex)
    
            'Obtengo la instancia del padre
            Dim f1 As Form1 = Application.OpenForms.OfType(Of Form1).SingleOrDefault()
    
            If f1 IsNot Nothing Then
                f1.LlenarOrden(CStr(row.Cells("CLAVE").Value),
                               CStr(row.Cells("NOMBRE").Value),
                               CStr(row.Cells("CAMPLIB3").Value),
                               CStr(row.Cells("CAMPLIB2").Value),
                               CStr(row.Cells("STATUS").Value))
            End If
    
            Me.Close()
    
        End Sub

    Con esto obtienes la instancia actual del Form1 que abrió al Form2 y accedes a su método.

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    • Marcado como respuesta FedericoHH viernes, 24 de junio de 2016 22:39
    viernes, 24 de junio de 2016 21:27
  • Esto funciono bien, muchas gracias

    DESDE EL FORO DE MSDN

    viernes, 24 de junio de 2016 22:39