none
Abrir form com o método .Show() não permitindo novas intâncias do form. RRS feed

  • Pergunta

  • Bom dia!!

    Pessoal uma dúvida básica, eu tenho um form pai e um filho, o filho deve interagir com o form pai, portando, não posso utilizar o .ShowDialog();

    Porém, o .Show(); permite abrir n forms. Isso não pode acontecer, deve ser exibido 1 vez só.

     

    Eu preciso que o form nao seja do tipo Dialog, podendo interagir com o form pai, mas sem permitir novas intâncias do form filho.

     

    Pensei em uma maneira de fazer usando um booleano, porém, a minha pergunta é a seguinte:

     

    Tem uma maneira automática de realizar essa operação?

     

    Obrigado!

    sexta-feira, 16 de dezembro de 2011 12:51

Respostas

Todas as Respostas

  • Automatica não tem, de uma lida neste meu artigo:

    http://olavooneto.wordpress.com/


    Olavo Oliveira Neto
    http://olavooneto.wordpress.com
    Twitter @Olavooneto
    Se for útil marque como resposta e faça um Developer feliz :)
    • Marcado como Resposta MarceloSchneider sexta-feira, 16 de dezembro de 2011 17:31
    sexta-feira, 16 de dezembro de 2011 14:11
  • Olavo, excelente artigo, completíssimo!

     

    Mas acabei utilizando desta forma:

                if (Form1 == null || Form1.IsDisposed == true)
                {
                    Form1 = new Form();
                }
    
                Form1.Show();
                Form1.Focus();
    


    E no cabelhaço declaro uma variável global:

            Form Form1 = null;
    

    Mesmo assim vou te marcar como resposta e marcarei a minha também, obrigado!

    • Marcado como Resposta MarceloSchneider sexta-feira, 16 de dezembro de 2011 17:31
    sexta-feira, 16 de dezembro de 2011 17:31
  • Marcelo boa tarde,

    Talvez te facilite ainda mais se vc usar um laço para percorrer quais forms estão abertos, e abrir somente se não estiver aberto. Algo mais ou menos assim:

     foreach (Form form in Application.OpenForms)
                {
                if (form.IsMdiContainer.name == Form1)

                     MessageBox.Show("Já aberto.");

                 else

                    Form1.Show(); 
                }

     

    A vantagem é que vc pode usar apenas esse metodo para validar a inicialização de qualquer form filho, do jeito que vc apresentou é uma solução, mas desse vc poderia usa-lo globalmente no seu projeto sem ter que criar variaveis nos forms. Acho q poderia te facilitar a vida.

    Boa sorte

     

     



    sexta-feira, 16 de dezembro de 2011 19:43