Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   .NET (http://www.forosdelweb.com/f29/)
-   -   cambiar valor textbox de un formulario a otro (http://www.forosdelweb.com/f29/cambiar-valor-textbox-formulario-otro-419749/)

bar1 24/08/2006 02:29

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 :molesto:

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 :adios:

bar1 25/08/2006 04:53

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 :si:

bar1 25/08/2006 05:55

YA ESTÁ! POR FIN!! LO CONSEGUÍ!!!!! :cool:
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 :adios:


La zona horaria es GMT -6. Ahora son las 04:01.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.