DUVIDAS AO USAR FORMULARIO MDI
Bom dia, pessoal..
Estou com o seguinte problema....
No VB.Net, para chamar um form, temos que instanciar o mesmo, correto?
Masss.. quando fecho o form, ao tentar abrir o mesmo, esta sendo aberta a baixo do anterior, ou
seja, é como se ele não estivesse limpando a instancia.
Eu estou fazendo da seguinte maneira..
--No botão do Form Pai.
dim frm as new frmCadCliente
frm.MdiParent = Me
frm.Show
--No botão sai do FrmCadCliente
Me.close
Qual é a forma correta para eu fechar um form?
Att.
Henrique
Estou com o seguinte problema....
No VB.Net, para chamar um form, temos que instanciar o mesmo, correto?
Masss.. quando fecho o form, ao tentar abrir o mesmo, esta sendo aberta a baixo do anterior, ou
seja, é como se ele não estivesse limpando a instancia.
Eu estou fazendo da seguinte maneira..
--No botão do Form Pai.
dim frm as new frmCadCliente
frm.MdiParent = Me
frm.Show
--No botão sai do FrmCadCliente
Me.close
Qual é a forma correta para eu fechar um form?
Att.
Henrique
frm.StartPosition = CenterScreen
frm.StartPosition = CenterScreen
Ok, muito obrigado pela antenção..
Posso até usar o CenteScreem
Mas do modo que esta, se eu clicar 10 vezes no botão para carregar o form, irão aparecer 10 forms..
então fiz da seguinte maneira.
if IsNothing(form) then
dim frm as new frmCadCliente
frm.MdiParent = Me
frm.Show
end if
ai ele vai verificar se o form ja esta aberto, caso Treu, não ira abrir outros, correto?
Masss... depois que fecho, ele não abre mais nenhum, pois acho q a instancia do form ainda esta lah...
e agora...!!!
Posso até usar o CenteScreem
Mas do modo que esta, se eu clicar 10 vezes no botão para carregar o form, irão aparecer 10 forms..
então fiz da seguinte maneira.
if IsNothing(form) then
dim frm as new frmCadCliente
frm.MdiParent = Me
frm.Show
end if
ai ele vai verificar se o form ja esta aberto, caso Treu, não ira abrir outros, correto?
Masss... depois que fecho, ele não abre mais nenhum, pois acho q a instancia do form ainda esta lah...
e agora...!!!
Me ajudem ao galera!!!
Private Sub OpenForm(ByVal frm As Form)
Dim encontro As Boolean = False
For Each filho As Form In Me.MdiChildren
If filho.Name = frm.Name Then
filho.Activate()
encontro = True
End If
Next
If Not encontro Then
frm.MdiParent = Me
frm.StartPosition = FormStartPosition.CenterScreen
frm.Show()
End If
End Sub
e para chamar tu faz assim
Me.OpenForm(My.Forms.frm1)
conseguiu resolver teu problema ?
Valeu Rames...
mas eu peguei uma função semelhante a sua....
Public Shared Function AbrirForm(ByVal FormUnico As Boolean, ByVal FormAbrir As Form, ByVal FormPai As Form) As Form
If FormUnico Then
For x As Integer = 0 To FormPai.MdiChildren.Length() - 1
If FormPai.MdiChildren(x).Name = FormAbrir.Name Then
Exit Function
End If
Next
End If
FormAbrir.MdiParent = FormPai
'FormAbrir.StartPosition = FormStartPosition.CenterScreen
FormAbrir.Show()
End Function
mas eu peguei uma função semelhante a sua....
Public Shared Function AbrirForm(ByVal FormUnico As Boolean, ByVal FormAbrir As Form, ByVal FormPai As Form) As Form
If FormUnico Then
For x As Integer = 0 To FormPai.MdiChildren.Length() - 1
If FormPai.MdiChildren(x).Name = FormAbrir.Name Then
Exit Function
End If
Next
End If
FormAbrir.MdiParent = FormPai
'FormAbrir.StartPosition = FormStartPosition.CenterScreen
FormAbrir.Show()
End Function
Tópico encerrado , respostas não são mais permitidas