Usuário com melhor resposta
Posicionar um MDI-Filho desobediente

Pergunta
-
O abordado em http://forums.microsoft.com/msdn-br/ShowPost.aspx?PostID=2350182&SiteID=21 não se aplica ao meu caso:
Eu tenho um formulário MDI que tem, dentre vários, dois formulários filhos que chamam um outro. Na primeira vez tudo corre bem, mas se o Utilizador resolver fechá-lo e tornar a abri-lo, ele vem desposicionado (devido ao dispose).
Para mim é interessante que ele seja MDI-filho, pois não desejo que ele apareça na Barra de Tarefas e que não seja possível para o Utilizador, com o uso de recursos como Alt+Tab, ocultá-lo.
Ele é chamado da seguinte forma:
Code SnippetAbre o frmRelogio.
' Se ele nunca foi inicializado, significa que nunca foi aberto. If Relogio Is Nothing OrElse Relogio.IsDisposed ThenRelogio =
Relogio.txtCodigo.Text = txtCodigo.Text
Relogio.txtNome.Text = Trim(txtNomePessoal.Text)
Relogio.txtFoto.Text = Trim(txtFoto.Text)
Relogio.Location =
New Point(156, 98)Relogio.ShowDialog(
Me) ElseRelogio.txtAlunoProfessor.Text =
"Aluno"Relogio.txtCodigo.Text = txtCodigo.Text
Relogio.txtNome.Text = Trim(txtNomePessoal.Text)
Relogio.txtFoto.Text = Trim(txtFoto.Text)
Relogio.Show()
' Ele já está abertoRelogio.BringToFront()
End IfAbraço a toda a Comunidade.
Respostas
-
O que acontecia é que o formulário MDI-Filho ora vinha posicionado (no bloco IF), ora desposicionado (no bloco ELSE). Daí eu alterei o .Show para .ShowDialog e está tudo resolvido.
Por quê? Não sei, mas está resolvido.
Obrigado pelas ajudas.
Todas as Respostas
-
Já pensou em usar My.Forms?
Assim vc nao precisa dar dispose, soh hide.
Quanto aa localizacao do form, o ideal seria voce posicionar o form no codigo acima, ou seja, um metodo que posiciona o form na posicao desejada e eh chamado tanto no load quanto antes do bringtofront.
Note que ao maximizar um mdi child e abrir um form nao maximizado vai deixar todos nao maximizados e vice versa.
-
-
-
O que acontecia é que o formulário MDI-Filho ora vinha posicionado (no bloco IF), ora desposicionado (no bloco ELSE). Daí eu alterei o .Show para .ShowDialog e está tudo resolvido.
Por quê? Não sei, mas está resolvido.
Obrigado pelas ajudas.