WINDOW FORM DENTRO CONTAINER
Opa
Tenho uma função para abertura de forms dentro de um container geral.
Para chama-la uso:
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
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
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
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
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?
aqui rodou no panel e no split container
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
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
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?
Coloque a function num modulo que roda
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.
Chamando a função de outro form que foi aberto pela mesmo função, não funciona, por exemplo, ao executar essa chamada
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:
mas, não acontece nada.
Logo, sempre os forms devem ser carregados em um unico form principal num mesmo container.
Vlw, me ajuda aÃ
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Ã
Porque não usar o form principal em MDI ? E os outros form em MDIChildren ? Se é o que eu entendi o que você quer...
no modulo:
no form principal:
no segundo form:
no terceiro form:
Aqui rodou tão bem que abri o form 1 dentro do form 1
alguma coisa voce está fazendo errado
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
Detalhe, funcionou no VS 2010 e no VS 2015
Faça seu login para responder