Load Window Form into VB.net Container

0

Opa

I have a function to open forms inside a general container.

Function carrega_form(ByRef ctl As Control, ByRef frm As Form)
    If ctl IsNot Nothing AndAlso frm IsNot Nothing Then
        frm.TopLevel = False
        frm.FormBorderStyle = FormBorderStyle.None
        frm.Dock = DockStyle.Fill
        frm.Visible = True
        ctl.Controls.Add(frm)
    End If
End Function

To call it use:

carrega_form(container, New frm_content_cadastro_botoes)

I want to be able to create a new form in the main form, so I have to create a new form, but when running again nothing happens.

I tried before calling the function to use: container , but it still does not call the form as it should.

If you use the call to different containers it works.

The container object is a Panel

    
asked by anonymous 10.07.2017 / 19:36

1 answer

0

The comments explain all the changes I've made. Some of them can solve your problem.

'                                              | você não precisa de uma
'                                              | referência para uma forma
'                                              | que está chamando sem
'                                              | referência
' Isso não retorna nada, então                 |
' não precisa ser uma Function                \ /
Public Sub carrega_form(ByRef ctl As Control, ByVal frm As Form)
    ' Verificação nula sempre no início do código
    ' Vamos economizar processador, galera
    If ctl Is Nothing Then Exit Sub
    ' Remove os controles antigos
    For i As Integer = 0 To ctrl.Controls.Count - 1
        ctrl.Controls.RemoveAt(i)
    Next
    ' Converte implícitamente a form para control
    Dim c As Control = frm
    ' Não precisamos mais da form
    frm.Dispose()
    ' Isso já define local e tamanho do controle.
    c.Dock = DockStyle.Fill
    ' Será visível?
    c.Visible = True
    ' Adiciona o controle.
    ctl.Controls.Add(c)
End Sub 
    
12.07.2017 / 20:44