none
Abrir Apenas um Formulário. RRS feed

  • Pergunta

  • Tenho um menu principal, onde tenho uma barra tool strip que abre vários formulários, quero a solução para que essa barra quando clico abra somente um formulário, por vez, por exemplo:

    Tenho 3 ícones(tool strip) no menu principal: Cadastro de usuário, cadastro de material, cadastro de cliente, ai quando clicar no formulário de cadastro de usuário abrir o formulário(Ate ai tudo bem), mais quando clicar no formulário de cadastro de material, exibir uma mensagem que que o formulário de usuário já esta aberto. 

    A função de verificar se o formulário cadastro já esta aberto consegui fazer, para ele não abrir vários do mesmo tipo e exibir mensagem de formulário já aberto. Fiz assim:

                    

     if (Application.OpenForms.OfType<Cadastro>().Count() > 0)
                {
                    MessageBox.Show("O Cadastro já está aberto!");
                }
                else
                {
                    Cadastro cadastro = new Cadastro();
                    cadastro.Show();

                }

    Mais não consegui fazer a parte da verificação para não abrir os outros formulários, quando o de cadastro estiver aberto.

    Qual melhor solução?

    Obrigado

     
    sexta-feira, 22 de fevereiro de 2013 18:01

Respostas

  • TENTE:

    Cadastro cadastro = new Cadastro();
    cadastro.Show();

    menu1.Enabled = false;
    menu2.Enabled = false;

    e no  evento Closing
    do seu form você faz
    ((FrmPrincipal)Application.OpenForm["Frmprincipal"]).menu1.Enabled = true;

    só lembre de deixar o menu1 como public..
    deve resolver para você amigo...

    abraços !
    • Marcado como Resposta Natan Wender sexta-feira, 1 de março de 2013 14:13
    sexta-feira, 22 de fevereiro de 2013 19:35

Todas as Respostas

  • amigo

    eu substituiria tudo isso por um simples

    Cadastro cadastro =  new Cadastro();

    cadastro.ShowDialog();

    ai ele já faz o tratamento de tela única aberta..

    sexta-feira, 22 de fevereiro de 2013 19:11
  • Obrigado.

    Mais isso não resolve meu problema, eu quero abra um formulário e desabilite o botão para que os outros não sejam abertos, ou como eu disse uma verificação para não abrir vários formulários apenas 1.

    sexta-feira, 22 de fevereiro de 2013 19:30
  • TENTE:

    Cadastro cadastro = new Cadastro();
    cadastro.Show();

    menu1.Enabled = false;
    menu2.Enabled = false;

    e no  evento Closing
    do seu form você faz
    ((FrmPrincipal)Application.OpenForm["Frmprincipal"]).menu1.Enabled = true;

    só lembre de deixar o menu1 como public..
    deve resolver para você amigo...

    abraços !
    • Marcado como Resposta Natan Wender sexta-feira, 1 de março de 2013 14:13
    sexta-feira, 22 de fevereiro de 2013 19:35
  • Faça um método no seu formulário principal que verifique se existe mais de 1 um formulário aberto:

      private void button1_Click(object sender, EventArgs e)
            {
                AbreFormulario(new Form1());
            }
    
            private void AbreFormulario(Form form)
            {
                //tem que ser maior que 1, pois o formulário principal entra na contagem
                if (Application.OpenForms.OfType<Form>().Count() > 1)
                {
                    MessageBox.Show("Outro Formulário já está aberto!");
                }
                else
                {
                    form.Show();
    
                }
            }

    Resolve seu problema?


    Ao infinito e além!


    • Editado Fabio R. Luz sábado, 23 de fevereiro de 2013 13:05
    • Sugerido como Resposta Joba Diniz sábado, 23 de fevereiro de 2013 15:50
    sábado, 23 de fevereiro de 2013 13:05
  • Dê uma olhada nesse artigo, provavelmente irá te ajudar.

    Abraços!


    Thiago Coelho - Líder das Comunidades .NET Coders e Windows 8 Brasil
    thiagocoelho.net | @thiagokoelho

    • Sugerido como Resposta Afonso Fernandes segunda-feira, 25 de fevereiro de 2013 16:13
    segunda-feira, 25 de fevereiro de 2013 13:13