La Web del Programador: Comunidad de Programadores
 
    Pregunta:  52902 - ACTUALIZAR INFORMACION DE FORM1 DESDE FORM2
Autor:  Jacke
Hola Amigos!!!! Necesito de su ayuda..... Estoy desarrollando una aplicación en VB.net 2003. Entro al Form1 y quiero realizar un búsqueda de clientes por lo que doy click al botón de buscar y llamo al form2 en donde se realiza la búsqueda del cliente, lo que necesito es lo siguiente al encontar al cliente deseo capturar los datos y actualizarlos en los textbox del form1 pero me da un error....
Este es el codigo que estoy usando...

Form1/frmPedidoCliente
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim fbuscarclientes As New frmBuscarCliente
fbuscarclientes.Show()
End Sub

Form2/frmBuscarCliente
Private Sub dgClientes_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles dgClientes.DoubleClick
Dim fila, vcodigo As Integer
Dim objcod, objnombre As Object
Dim vnombre As String
Dim fpedidocliente As new frmPedidoCliente
fila = dgClientes.CurrentRowIndex
objcod = dgClientes.Item(fila, 0)
vcodigo = Format(CInt(objcod))
objcod = dgClientes.Item(fila, 2)
vnombre = Format(CStr(objnombre))
******* fpedidocliente.show
fpedidocliente.txtCodCliente.Text = vcodigo
fpedidocliente.txtCliente.Text = vnombre
Me.Hide()
End Sub

El ERROR \"Excepción no controlada del tipo \'System.NullReferenceException\" me lo da en esta linea ******* fpedidocliente.show

Si me pudiera ayudar se lo agradeceria de corazon,
Gracias de antemano

  Respuesta:  juan p
bueno jacke realice tu procedimienton pero bota error de intervalo si la es opcion si funciona pero solo jala el numero de serie mas no el nombre

Private Sub dgclientes_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles dgclientes.DoubleClick

Dim fila, vcodigo As Integer
Dim objcod, objnombre As Object
Dim vnombre As String
Dim fpedidocliente As New frmPedidoCliente
fpedidocliente = Me.Owner
fila = dgclientes.CurrentRowIndex
objcod = dgclientes.Item(fila, 0)
vcodigo = Format(CInt(objcod))
objcod = dgclientes.Item(fila, 2) 'error de intervalo
vnombre = Format(CStr(objnombre))

fpedidocliente.txtCodcliente.Text = vcodigo
fpedidocliente.txtcliente.Text = vnombre
Me.Hide()

porfa indicame como solucionaste este problema
End Sub

  Respuesta:  David Garcia
Hola a mi me pasaba algo parecido y descubri una forma de hacerlo, espero que te ayude.
Al crear el Form2 y antes de mostrarlo (.Show()) asigna a la propiedad Owner del objeto recien creado el propio formulario Form1 asi:
Dim fbuscarclientes As New frmBuscarCliente
fbuscarclientes.Owner = me
fbuscarclientes.Show()

Y luego en Form2 no instancies el formulario fpedidocliente, crea una referencia al objeto que ya has creado.

Dim fpedidocliente As frmPedidoCliente
fpedidocliente = me.Owner
.... Resto de código ....

Y no hagas fpedidocliente.Show() pues el formulario Form1 que capturará los datos de vuelta ya esta creado y solo tienes que cambiarle los datos a sus objetos...

Bueno espero que te lo solucione. Un saludo