Foros del Web » Programación para mayores de 30 ;) » .NET »

cambiar valor textbox de un formulario a otro

Estas en el tema de cambiar valor textbox de un formulario a otro en el foro de .NET en Foros del Web. Hola amigos! me he visto obligado a recorrer a vuestra ayuda tras la imposibilidad de avanzar en la elaboración de mi proyecto vb .net 2005 ...
  #1 (permalink)  
Antiguo 24/08/2006, 02:29
 
Fecha de Ingreso: diciembre-2004
Mensajes: 54
Antigüedad: 20 años, 2 meses
Puntos: 0
Pregunta cambiar valor textbox de un formulario a otro

Hola amigos! me he visto obligado a recorrer a vuestra ayuda tras la imposibilidad de avanzar en la elaboración de mi proyecto vb .net 2005

Lo que pretendo es simplemente mostrar el valor de una cadena que recojo del DataGridView (enlazado a un DataView) de un formulario (Form2) para mostrarlo en un control tipo TextBox de otro formulario Form1.

El siguiente código no da ningun error pero me impide leer la maldita cadena

Form 1 - frmNuevoPedido
Código:
  '***ABRIMOS FORMULARIO FORM1****************************
    Public Sub openForm(ByVal id As String, ByVal esUPD As Boolean)
        Call cargarDatos()
        Me.ShowDialog()
    End Sub
    (...)
    '***LLAMAMOS A FORM2 PARA LEER DATOS DEL DATASET ************
    Private Sub CmdBuscarProveedor_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles CmdBuscarProveedor.Click
        Dim ofrmListaProveedores As frmListaProveedores = New frmListaProveedores
        ofrmListaProveedores.openForm()
    End Sub
    (...)
    '***ASIGNAMOS VALOR DESPUES DE RECIBIR EL ÍNDICE POR REFERENCIA DESDE FORM2 ****************************    
Public Sub CogerNombreProveedor(ByVal idpro As String)
        Dim oDataView As New DataView(oDataSet.Tables("Proveedores"), "ID_Proveedor = '" & idpro & "'", Nothing, DataViewRowState.CurrentRows)
        Dim oDataRowView As DataRowView
        For Each oDataRowView In oDataView
            'la siguiente instrucción no la ejecuta! POR QUÉ?¿?
            'es como si el TxtProveedor estuviera bloqueado
           'si aquí hago un MsgBox(oDataRowView("Nombre").ToString.ToUpper) el valor sale perfectamente por pantalla pero la siguiente instrucción no lo asigna a TextProveedor
            Me.TxtProveedor.Text = oDataRowView("Nombre").ToString.ToUpper            
            'Me.TxtProveedor.Text = "ENTRAAAAAAAAAAAAAAAAAAAAAAAAAAA"
        Next
    End Sub 
Form 2 - frmListaProveedores
Código:
 '***ABRIMOS FORMULARIO FORM2****************************
    Public Sub openForm()
        Call InitializeDataGridView()     'los datos se muestran correctamente
        Me.ShowDialog()
    End Sub
    (...)
    '***RECOGEMOS ÍNDICE DE LA FILA Y LO PASAMOS POR REFERENCIA A OTRO PROCEDIMIENTO QUE ES LEÍDO POR FORM1****************************    
Private Sub DGV_ListaProveedores_CellDoubleClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DGV_ListaProveedores.CellDoubleClick
        If Not (Me.DGV_Pacients.Rows(e.RowIndex).Cells("ID_Proveedor").Value Is Nothing) Then Call leerNombreProveedor(Me.DGV_Pacients.Rows(e.RowIndex).Cells("ID_Proveedor").Value)
    End Sub
    (...)
   '***SUBRUTIMA QUE ENVÍA EL VALOR PARA SER ASIGNADO AL CONTROL DESEADO DESDE MISMO FORM1****************************
    Private Sub leerNombreProveedor(ByVal id As String)
        Call frmNuevoPedido.CogerNombreProveedor(id)    'llamo a procedimiento de Form1 para leer valor
        Me.Close()
    End Sub 
Como abreis podido ver se trata de 2 formularios Modales (ShowDialog()). ¿Eso puede tener algo que ver?

Agradezco de antemano cualquier idea

Última edición por bar1; 24/08/2006 a las 02:54 Razón: falta detalle
  #2 (permalink)  
Antiguo 25/08/2006, 04:53
 
Fecha de Ingreso: diciembre-2004
Mensajes: 54
Antigüedad: 20 años, 2 meses
Puntos: 0
qué?! nadie se anima?
mira que me lo curré con los colorcitos.. como alguien me diga que no lo entiende lo mato! jeje

venga, que no puedo avanzar sin vuestra ayuda tios
  #3 (permalink)  
Antiguo 25/08/2006, 05:55
 
Fecha de Ingreso: diciembre-2004
Mensajes: 54
Antigüedad: 20 años, 2 meses
Puntos: 0
YA ESTÁ! POR FIN!! LO CONSEGUÍ!!!!!
Ya podeis dejar de buscar la solución, no me hará falta (jejeje)

El problema estaba, efectivamente, con el tema de los formularios Modales. Tan sólo hay que llamar al formulario hijo (Form 2) desde el formulario padre (Form 1). Claro, eso parece evidente, pero ya habeis visto mi forma de llamar a los formularios desde la rutina openForm. Pues pensaba que no había diferencia pero SI QUE LA HAY!!

Ahí os dejo el código final:

Form1
Código:
 
Private Sub CmdBuscarProveedor_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles CmdBuscarProveedor.Click
        Dim ofrmListaProveedores As frmListaProveedores = New frmListaProveedores
        ofrmListaProveedores.ShowDialog(Me)
End Sub 
Form2
Código:
 '***ABRIMOS FORMULARIO FORM2****************************
Public Sub frmListaProveedores_Load (ByVal sender AsObject, ByVal e As System.EventArgs) HandlesMe.Load
        Call InitializeDataGridView()     'los datos se muestran correctamente
End Sub
 
    '***RECOGEMOS ÍNDICE DE LA FILA Y LO PASAMOS POR REFERENCIA A OTRO PROCEDIMIENTO QUE ES LEÍDO POR FORM1****************************    
Private Sub DGV_ListaProveedores_CellDoubleClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DGV_ListaProveedores.CellDoubleClick
        If Not (Me.DGV_Proveedores.Rows(e.RowIndex).Cells("ID_Proveedor").Value Is Nothing) Then 
CType(Me.Owner, frmNuevoPedido).TxtProveedor.Text =
Me.DGV_Proveedores.Rows(e.RowIndex).Cells("Nombre").Value
End Sub 
Ala pues, ahí acabo el monólogo (jeje)
Hasta otra colegas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:49.