none
Pasar información de Form Hijo a Form Padre VB.NET 2012 RRS feed

  • Pregunta

  • Buenos días y Feliz navidad para todos.

    Estoy buscando la manera mas adecuada de pasar la información de un datatable de un formulario Hijo, al formulario padre o propietario de este.

    Generalmente me manejo de la siguiente manera para llamar formularios, pero cualquier recomendación será bien recibida:

    Public Class Form1

    Dim FormDos As Form2
    FormDos .ShowDialog()


    End Class

    Public Class Form2
    dim TablaPrueba as new datatable

    Sub CargarValoresTablaPrueba

    ...

    ...

    ...

    End Sub

    End Class

    Anteriormente declaraba un datatable global en un módulo, pero pienso que debe haber una mejor manera y agradecería mucho sus consejos.

    Desde ya Muchas gracias



    Public Class Form2


    End Class
    Public Class Form2


    End Class
    sábado, 26 de diciembre de 2015 12:52

Respuestas

  • La forma más sencilla es crear una propiedad de sólo lectura en el formulario hijo que exponga los datos a devolver al formulario padre:

    Public Class Form2
    
        Private resultData As DataTable
        Public ReadOnly Property TablaPrueba() As DataTable
            Get
                Return resultData
            End Get
        End Property
    
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            resultData = CargarValoresTablaPrueba()
            DialogResult = DialogResult.OK
            Close()
        End Sub
    
        Private Function CargarValoresTablaPrueba() As DataTable
            ' Consulta que devuelve el DataTable a devolver
            Return New DataTable()
        End Function
    
    End Class

    De esta forma, para llamar al formulario hijo y recuperar la información no tendrías más que:

        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            Dim dialog As New Form2()
            If dialog.ShowDialog() = DialogResult.OK Then
                Dim datos As DataTable = dialog.TablaPrueba
                ' Procesar datos
            End If
        End Sub
    


    Píldoras .NET
    Artículos, tutoriales y ejemplos de código .NET

    Píldoras JS
    Artículos, tutoriales y ejemplos de código JavaScript, HTML5, CSS3, ...

    • Marcado como respuesta CM16 sábado, 26 de diciembre de 2015 13:45
    sábado, 26 de diciembre de 2015 13:10

Todas las respuestas

  • La forma más sencilla es crear una propiedad de sólo lectura en el formulario hijo que exponga los datos a devolver al formulario padre:

    Public Class Form2
    
        Private resultData As DataTable
        Public ReadOnly Property TablaPrueba() As DataTable
            Get
                Return resultData
            End Get
        End Property
    
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            resultData = CargarValoresTablaPrueba()
            DialogResult = DialogResult.OK
            Close()
        End Sub
    
        Private Function CargarValoresTablaPrueba() As DataTable
            ' Consulta que devuelve el DataTable a devolver
            Return New DataTable()
        End Function
    
    End Class

    De esta forma, para llamar al formulario hijo y recuperar la información no tendrías más que:

        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            Dim dialog As New Form2()
            If dialog.ShowDialog() = DialogResult.OK Then
                Dim datos As DataTable = dialog.TablaPrueba
                ' Procesar datos
            End If
        End Sub
    


    Píldoras .NET
    Artículos, tutoriales y ejemplos de código .NET

    Píldoras JS
    Artículos, tutoriales y ejemplos de código JavaScript, HTML5, CSS3, ...

    • Marcado como respuesta CM16 sábado, 26 de diciembre de 2015 13:45
    sábado, 26 de diciembre de 2015 13:10
  • Muchas gracias, ha sido justo lo que necesitaba.

    Saludos y felices fiestas.

    sábado, 26 de diciembre de 2015 13:45