none
Posicionar um MDI-Filho desobediente RRS feed

  • 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 Snippet

    Abre o frmRelogio.

    ' Se ele nunca foi inicializado, significa que nunca foi aberto.

    If Relogio Is Nothing OrElse Relogio.IsDisposed Then

    Relogio = New frmRelogio

    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)

    Else

    'Relogio.WindowState = FormWindowState.Maximized

    Relogio.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á aberto

    Relogio.BringToFront()

    End If

     

    Abraço a toda a Comunidade.

    segunda-feira, 21 de julho de 2008 01:19

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.

    terça-feira, 22 de julho de 2008 16:01

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.

     

    segunda-feira, 21 de julho de 2008 19:35
  • Olá, JCKödel! Obrigado pela resposta.

     

    Não, eu não tinha pensado no My.Forms, mas fi-lo.

     

    Agora, quanto a localização ainda não resolvi. Vou continuar a tentar.

     

    Obrigado!

    segunda-feira, 21 de julho de 2008 23:13
  • Explique, com detalhes, o que acontece com o posicionamento do form.
    terça-feira, 22 de julho de 2008 03:25
  • 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.

    terça-feira, 22 de julho de 2008 16:01