none
Abrir formulario hijo desde otro formulario hijo ambos contenido por un formulario mdiParent RRS feed

  • Pregunta

  • Hola a todos, mi duda es que ¿Cómo puedo hacer para que de un formulario hijo abra otro formulario y que quede contenido dentro del primer formulario padre?

    El código que estoy manejando para realizar es el siguiente:

    Formulario Padre frmPrincipal (en un botón donde llamo al frmHijoA):

        Dim oform As New frmVentas
        oform.MdiParent = Me
        oform.Show()

     

    Formulario HijoA (frmVentas):

    Dim oBuscarCli As New frmBuscarCliente 'formulario hijoB
    'Aquí tengo el problema al parecer
    oBuscarCli.MdiParent = frmPrincipal 
    oBuscarCli.Show() 'Al ejecutar esta línea no se abre el oBuscarCli

     

    Entonces, al llamar al formulario HijoB desde el hijoA, no logro abrir el formulario hijoB... Y necesito abrir el formulario hijoB para poder transportar datos seleccionados hacia el form hijoA.

    Desde ya muchas gracias.

     

    lunes, 10 de mayo de 2010 14:50

Respuestas

Todas las respuestas


  • Prueba asi:

    Dim oBuscarCli As New frmBuscarCliente 'formulario hijoB
    'Aquí tengo el problema al parecer
    oBuscarCli.MdiParent=me.Parent

    Para el correcto funcionamiento, y que otros usuarios se puedan beneficiar de la solucion de esta pregunta por favor marca las respuestas que te hayan ayudado como "Respuesta".
    Si la respuesta te ha sido util Votala.
    Mi Blog: Jtorrecilla
    Enlace a Faq de Winforms en Ingles Muy bueno
    lunes, 10 de mayo de 2010 15:06
    Moderador

  • Prueba asi:

    Dim oBuscarCli As New frmBuscarCliente 'formulario hijoB
    'Aquí tengo el problema al parecer
    oBuscarCli.MdiParent=me.Parent

    Para el correcto funcionamiento, y que otros usuarios se puedan beneficiar de la solucion de esta pregunta por favor marca las respuestas que te hayan ayudado como "Respuesta".
    Si la respuesta te ha sido util Votala.
    Mi Blog: Jtorrecilla
    Enlace a Faq de Winforms en Ingles Muy bueno

    Hola! Gracias por responder tan pronto.

    He probado como tu me has dicho (oBuscarCli.MdiParent=Me.Parent) y me ha salido el siguiente error: Unable to cast object of type 'System.Windows.Forms.MdiClient' to type 'System.Windows.Forms.Form'. Tienes alguna idea? 

    lunes, 10 de mayo de 2010 15:24
  • Obviamente...

    Fijate si es posible Me.Parent.Parent

     

    lunes, 10 de mayo de 2010 15:47
  • El problema es que hay que realizar un Casting:

     

        Dim oBuscarCli As New frmBuscarCliente
        oBuscarCli.MdiParent = CType(Me.MdiParent, System.Windows.Forms.Form)
        oBuscarCli.Show()

    Hasta ahí todo bien, me abre el formulario HijoB desde el HijoA, pero ahora me pasa otro problema, y es que ahora al seleccionar y hacer doble clic en una fila de un DataGridView dentro del hijoB, se cierra el formulario HijoB pero no me transporta los datos a los labels del HijoA... El código que utilizo para dicho cometido es el siguiente:

        Sub Buscar()
        Dim ocliente As New Cliente 'Clase Cliente
        With ocliente
          .cliID = Me.txtClienteID.Text
          .buscar_cliente()
          With My.Forms.frmMaestroDetalleProducto
            .lblClienteID.Text = ocliente.cliID
            .PedidoIDLabel1.BackColor = Color.Gray
            .lblClienteID.BackColor = Color.Gray
            .lblNombre.Text = ocliente.nomNeg
            .lblNombre.BackColor = Color.Gray
            .dtpFechaEntrega.Enabled = True
          End With
        End With
        Me.Close()
      End Sub
    
    Private Sub dgvAgregar_CellDoubleClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgvAgregar.CellDoubleClick
    
    Dim row As DataGridViewRow = dgvAgregar.Rows(e.RowIndex)
    
    If row.Cells("ClienteID").Value IsNot DBNull.Value Then
    txtClienteID.Text = row.Cells("ClienteID").Value
    End If
    Buscar()
    End Sub

     

    lunes, 10 de mayo de 2010 15:50
  • Obviamente...

    Fijate si es posible Me.Parent.Parent

     

    Gracias, de esta forma también puedo mostrar el formulario hijoB desde el hijoA, aunque no he podido hacer el transporte de los datos seleccionados en el DataGridView que esta en el hijoB y colocar los datos en los labels del hijoA. Si tienes alguna idea te lo agradecería. El código que utilizo para hacer el transporte es el siguiente:

      Private Sub dgvAgregar_CellDoubleClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgvAgregar.CellDoubleClick
    
        Dim row As DataGridViewRow = dgvAgregar.Rows(e.RowIndex)
    
        If row.Cells("ClienteID").Value IsNot DBNull.Value Then
          txtClienteID.Text = row.Cells("ClienteID").Value
        End If
        Buscar()
      End Sub
      Sub Buscar()
        Dim ocliente As New Cliente
        With ocliente
          .cliID = Me.txtClienteID.Text
          .buscar_cliente()
          frmMaestroDetalleProducto.lblClienteID.Text = .cliID
          frmMaestroDetalleProducto.PedidoIDLabel1.BackColor = Color.Gray
          frmMaestroDetalleProducto.lblClienteID.BackColor = Color.Gray
          frmMaestroDetalleProducto.lblNombre.Text = .nomNeg
          frmMaestroDetalleProducto.lblNombre.BackColor = Color.Gray
          frmMaestroDetalleProducto.dtpFechaEntrega.Enabled = True
        End With
        Me.Close()
      End Sub

    lunes, 10 de mayo de 2010 16:11