none
Form pai e Filho RRS feed

  • Pergunta

  • [C# ,Windons Form] Tenho um formulário principal (form Pai) em um menu tool strip, onde eu clico e abre outros formulários(forms Filhos),como por exemplo cadastro de usuario, cadastro de material entre outros. O problema é o seguinte toda vez que eu clico no formulário  pai, para abrir um formulário filho abre uma nova instância assim abrindo vários formularios do mesmo tipo, queria broquear isso e deixar abrir apenas um formulário quando eu clicar e se o formulário filho já estiver aberto, exibir uma mensagem de formulário aberto e dar foco ao formulário. obrigado
    terça-feira, 5 de fevereiro de 2013 17:05

Respostas

Todas as Respostas

  • tente:

    private void SingleInstance()
    {
    	Form Frm;
    
    	if ( !OpenForm( "MeuForm" ) )
    	{
    		Frm = new Form();
    		Frm.Name = "MeuForm";
    		Frm.Show();
    	}
    
    }
    
    private bool OpenForm( String Name )
    {
    	bool Return;
    	Return = false;
    
    	if ( Application.OpenForms[Name] != null )
    	{
    		Application.OpenForms[Name].Show();
    		Return = true;
    	}
    	
    	return Return;
    }


    • Marcado como Resposta Natan Wender terça-feira, 5 de fevereiro de 2013 18:11
    • Não Marcado como Resposta Natan Wender terça-feira, 5 de fevereiro de 2013 18:12
    • Marcado como Resposta Natan Wender terça-feira, 5 de fevereiro de 2013 18:12
    terça-feira, 5 de fevereiro de 2013 17:23
  • Muito obrigado pela resposta, mais não solucionou. O problema é que cada vez que eu clico no toolStripButton ele abre um novo form, assim abrindo vários formulários do mesmo tipo. Já pesquisei outras formas, (desabilitar o botão (ou item de menu) que abre o formulário, e só voltar a habilitá-lo quando o formulário fechar). Mais nenhuma forma foi aceita.

    terça-feira, 5 de fevereiro de 2013 18:14
  • Natan, fiz este post no meu blog que poderá te ajudar.

    Abraços!


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

    • Sugerido como Resposta Afonso Fernandes quarta-feira, 6 de fevereiro de 2013 15:24
    • Marcado como Resposta Natan Wender quarta-feira, 6 de fevereiro de 2013 18:17
    quarta-feira, 6 de fevereiro de 2013 15:22
  • Muito Obrigado Thiago

    Pelo seu blog eu conseguir resolver o meu problema. Más não consegui fazer a parte MDI dos forms, em que você coloca os filhos anexados na janela do principal. Não funciona fiz exatamente como no blog e na hora que eu clico para abrir um formulário, no menustrip ele não abre nada acontece. Eu mudei a propriedade IsMdiContainer como true no FormPrincipal, coloquei o código desse forma. 

    private void trafegoDeInformaçõesToolStripMenuItem_Click(object sender, EventArgs e)
            {
                    frmTrafego trafego = new frmTrafego();
                    trafego.MdiParent = this;
                    trafego.Show();
              }

     Mais não funcionou, ai resolvi fazer a parte dos forms abertos, ai percebi que ele reconhece que o form está aberto mais aparece na tela.

    Abraço. Obrigado.

    quarta-feira, 6 de fevereiro de 2013 18:35
  • Tenta baixar o exemplo que eu coloquei e dar uma comparada com o que você fez.

    Abraços!


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

    quarta-feira, 6 de fevereiro de 2013 19:05