WINDOW FORM DENTRO CONTAINER

SNNIFFER 10/07/2017 16:14:21
#475108
Opa

Tenho uma função para abertura de forms dentro de um container geral.

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



Para chama-la uso:

carrega_form(container, New frm_content_cadastro_botoes)


Senha que o containerfica num form principal, o que tenho que fazer é apenas carregar outros forms dentro deste container, o problema é que isso ocorre apenas uma vez, ou seja, ao executar a função o form é aberto, mas, ao executar novamente não acontece nada.

Tentei antes de chamar a função usar: Me.hide, mas, ainda não chama o form como deveria.

Se usar a chamada para containers diferentes funciona.

O objeto container é um Panel
DAMASCENO.CESAR 10/07/2017 16:33:32
#475109
faz assim:

If ctl IsNot Nothing AndAlso frm IsNot Nothing Then
ctl.Controls.Clear()
frm.TopLevel = False
frm.FormBorderStyle = FormBorderStyle.None
frm.Dock = DockStyle.Fill
frm.Visible = True
ctl.Controls.Add(frm)
End If

SNNIFFER 10/07/2017 16:43:14
#475113
Citação:

:
faz assim:

If ctl IsNot Nothing AndAlso frm IsNot Nothing Then
ctl.Controls.Clear()
frm.TopLevel = False
frm.FormBorderStyle = FormBorderStyle.None
frm.Dock = DockStyle.Fill
frm.Visible = True
ctl.Controls.Add(frm)
End If



Blz mestre, mas, me da mais uma força, dentro destes formas abertos no container, tem botões que fazem a mesma coisa, abrem outros forms no mesmo container, portanto estou chamando a função assim:

carrega_form(frm_principal.container, New frm_cliente_lista)


Ou seja, estou referenciando o nome do form e setando o container, mas, ao chamar desta forma não acontece nada :-(

O que será o problema?
DAMASCENO.CESAR 10/07/2017 16:52:07
#475114
aqui rodou no panel e no split container
DAMASCENO.CESAR 10/07/2017 16:54:24
#475115
Function carrega_form(ByRef ctl As Control, ByRef frm As Form)
If ctl IsNot Nothing AndAlso frm IsNot Nothing Then
ctl.Controls.Clear()
frm.TopLevel = False
frm.FormBorderStyle = FormBorderStyle.None
frm.Dock = DockStyle.Fill
frm.Visible = True
ctl.Controls.Add(frm)
End If
End Function

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
carrega_form(Pnl1, New Form2)
carrega_form(Splt1.Panel2, New Form2)
End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
carrega_form(Pnl1, New Form3)
carrega_form(Splt1.Panel2, New Form3)
End Sub
SNNIFFER 10/07/2017 17:24:28
#475116
Então, mestre Damasceno funcionou sim, mas, se o botão que chama a função estiver dentro do form que acabou de abrir, não acontece nada , será que seria preciso referenciar a chamada de alguma outra forma?
DAMASCENO.CESAR 10/07/2017 18:23:24
#475119
Coloque a function num modulo que roda
SNNIFFER 11/07/2017 13:57:33
#475134
Opa amigão, mas, já está num modulo.

A função está no modulo
Chamando a função no mesmo form que está o container, funciona.
carrega_form(container, New frm_content_cadastro_botoes)


Chamando a função de outro form que foi aberto pela mesmo função, não funciona, por exemplo, ao executar essa chamada
carrega_form(container, New frm_content_cadastro_botoes)


A partir do form_principal o form_content_cadastro_botoes é carregado, mas, dentro deste form carregado tenho outros botões que ao ser clicado deve carregar outro form no mesmo container, chamando assim:
carrega_form(frm_principal.container, New frm_cliente_lista)

mas, não acontece nada.

Logo, sempre os forms devem ser carregados em um unico form principal num mesmo container.


Vlw, me ajuda aí
F001E 11/07/2017 14:38:52
#475136
Porque não usar o form principal em MDI ? E os outros form em MDIChildren ? Se é o que eu entendi o que você quer...
DAMASCENO.CESAR 11/07/2017 14:47:18
#475138
no modulo:
  Module Module1
Function carrega_form(ByRef ctl As Control, ByRef frm As Form)
If ctl IsNot Nothing AndAlso frm IsNot Nothing Then
ctl.Controls.Clear()
frm.TopLevel = False
frm.FormBorderStyle = FormBorderStyle.None
frm.Dock = DockStyle.Fill
frm.Visible = True
ctl.Controls.Add(frm)
End If
End Function
End Module


no form principal:
  Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
carrega_form(Control, New Form2)
End Sub
End Class


no segundo form:

  Public Class Form2
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
carrega_form(Form1.Control, New Form3)
End Sub
End Class


no terceiro form:

  Public Class Form3
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
carrega_form(Form1.Control, New Form2)
End Sub
End Class


Aqui rodou tão bem que abri o form 1 dentro do form 1

alguma coisa voce está fazendo errado
DAMASCENO.CESAR 11/07/2017 14:51:35
#475139
Detalhe, funcionou no VS 2010 e no VS 2015
Página 1 de 2 [13 registro(s)]
Faça seu login para responder