none
Fechar um form já aberto através de outro form RRS feed

  • Pergunta

  • Tenho dois forms. Abro o primeiro, confirmo os dados e clico no botão Confirmar, assim será aberto um novo Form para confirmar informações adicionais. Nesse Form2, quando eu termino de confirmar as informações adicionais e clico no botão para gravar tudo, gostaria que depois de clicar neste botão, o Form2 e o Form1 fossem fechados ao mesmo tempo...
    sexta-feira, 30 de agosto de 2013 13:57

Respostas

  • Olá Gab

    Seguinte, não sei como está chamando o Form2 mas pode fazer o seguinte.

    Quando instanciar o Form2 passa como parâmetro a instancia do Form1, para isso teria que alterar o construtor do Form2 mas é tranquilo. Dai no evento do seu botão de salvar que está no Form2 você pegaria a instancia do Form1 e faria o seguinte: 

    form1.Dispose(); // Isso já mata o Form1

    e em seguinte mandaria um :

    this.Dispose(); //Isso mata o Form atual, no caso o Form2

    Me fiz claro ? Se não der pra entender faço alguma coisa aqui pra te mostrar

    Se fui útil não esquece de marcar como resposta

    Att

    Vinicius Cruz

    • Marcado como Resposta GAB2903 sexta-feira, 30 de agosto de 2013 15:03
    sexta-feira, 30 de agosto de 2013 14:27
  • Formulário Form2

    public partial class Form2 : Form
    {
    	public bool IsConfirm { get; set; }
    	public Form2()
    	{
    		InitializeComponent();
    	}
    
    	private void button1_Click(object sender, EventArgs e)
    	{
    		IsConfirm = true;
    		this.Close();
    	}
    
    	private void Form2_Load(object sender, EventArgs e)
    	{
    		IsConfirm = false;
    	}
    }

    Crie ai dentro do Form2 um propriedade IsConfirm aonde no Form1 eu posso ver as modifações

    private void button2_Click(object sender, EventArgs e) { using (Form2 frm = new Form2()) { frm.ShowDialog(); if (frm.IsConfirm) { // confirma a rotina!!!

    this.Close(); //Fecha o Formulário 1 } } }


    Ai antes de sair da instância do Form2 se pode resgatar essa propriedade que ta no Form2 e trabalhar suas informações de confirmação!

    Entendeu


    Fúlvio Cezar Canducci Dias


    sexta-feira, 30 de agosto de 2013 14:39
  • Pega o post anterior que tem todo o formulario 2 e o botão do formulário 1

    Fúlvio Cezar Canducci Dias

    • Marcado como Resposta GAB2903 sexta-feira, 30 de agosto de 2013 15:03
    sexta-feira, 30 de agosto de 2013 14:42
  • entendi como matar os forms, mas como seria a alteracao da construçao do Form2?

    onde tem :


    public Form2(){ InitializeComponent(); } //fica assim private Form1 frm; public Form2(Form1 frm1){ InitializeComponent();

    frm = frm1; }


    ai na hora de chamar o Form2 do Form1 vc faz o seguinte

    Form2 frm2 = new Form2(this);

    Blz ?

    • Marcado como Resposta GAB2903 sexta-feira, 30 de agosto de 2013 15:02
    sexta-feira, 30 de agosto de 2013 14:47

Todas as Respostas

  • Olá Gab

    Seguinte, não sei como está chamando o Form2 mas pode fazer o seguinte.

    Quando instanciar o Form2 passa como parâmetro a instancia do Form1, para isso teria que alterar o construtor do Form2 mas é tranquilo. Dai no evento do seu botão de salvar que está no Form2 você pegaria a instancia do Form1 e faria o seguinte: 

    form1.Dispose(); // Isso já mata o Form1

    e em seguinte mandaria um :

    this.Dispose(); //Isso mata o Form atual, no caso o Form2

    Me fiz claro ? Se não der pra entender faço alguma coisa aqui pra te mostrar

    Se fui útil não esquece de marcar como resposta

    Att

    Vinicius Cruz

    • Marcado como Resposta GAB2903 sexta-feira, 30 de agosto de 2013 15:03
    sexta-feira, 30 de agosto de 2013 14:27
  • using (Form2 frm = new Form2())
    {
       frm.ShowDialog();                
    }
    this.Close();
    Abre o Form2 normalmente setando a instância e no final se coloca um this.Close() para fechar o formulário que abriu o Form2 ....

    Fúlvio Cezar Canducci Dias

    • Sugerido como Resposta Fulvio Cezar Canducci Dias sexta-feira, 30 de agosto de 2013 14:35
    • Não Sugerido como Resposta GAB2903 sexta-feira, 30 de agosto de 2013 14:36
    sexta-feira, 30 de agosto de 2013 14:35
  • entendi como matar os forms, mas como seria a alteracao da construçao do Form2?

    sexta-feira, 30 de agosto de 2013 14:35
  • Fúlvio, o Form1 deve ficar aberto, pois caso eu cancele os dados no Form2, devo voltar no Form1. O form1 so deve ser fechado se eu gravar finalmente os dados no form2
    sexta-feira, 30 de agosto de 2013 14:37
  • Formulário Form2

    public partial class Form2 : Form
    {
    	public bool IsConfirm { get; set; }
    	public Form2()
    	{
    		InitializeComponent();
    	}
    
    	private void button1_Click(object sender, EventArgs e)
    	{
    		IsConfirm = true;
    		this.Close();
    	}
    
    	private void Form2_Load(object sender, EventArgs e)
    	{
    		IsConfirm = false;
    	}
    }

    Crie ai dentro do Form2 um propriedade IsConfirm aonde no Form1 eu posso ver as modifações

    private void button2_Click(object sender, EventArgs e) { using (Form2 frm = new Form2()) { frm.ShowDialog(); if (frm.IsConfirm) { // confirma a rotina!!!

    this.Close(); //Fecha o Formulário 1 } } }


    Ai antes de sair da instância do Form2 se pode resgatar essa propriedade que ta no Form2 e trabalhar suas informações de confirmação!

    Entendeu


    Fúlvio Cezar Canducci Dias


    sexta-feira, 30 de agosto de 2013 14:39
  • Pega o post anterior que tem todo o formulario 2 e o botão do formulário 1

    Fúlvio Cezar Canducci Dias

    • Marcado como Resposta GAB2903 sexta-feira, 30 de agosto de 2013 15:03
    sexta-feira, 30 de agosto de 2013 14:42
  • GAB, tudo bem......

    se é só fechar os dois forms, no final do seu método gravar coloque esse código:

                

                // fechar o form2
                this.Close();

    // fecha o form1 Form1.ActiveForm.Close();


    abraço  !!!!   ;)

    Diego Almeida Barreto
    System Analyst / Software Developer


    sexta-feira, 30 de agosto de 2013 14:43
  • entendi como matar os forms, mas como seria a alteracao da construçao do Form2?

    onde tem :


    public Form2(){ InitializeComponent(); } //fica assim private Form1 frm; public Form2(Form1 frm1){ InitializeComponent();

    frm = frm1; }


    ai na hora de chamar o Form2 do Form1 vc faz o seguinte

    Form2 frm2 = new Form2(this);

    Blz ?

    • Marcado como Resposta GAB2903 sexta-feira, 30 de agosto de 2013 15:02
    sexta-feira, 30 de agosto de 2013 14:47