none
Passar informações de um form para outro RRS feed

  • Pergunta

  • Olá pessoal,

    Tenho um form principal "Pai" e vários filhos. Porém preciso alimentar uma variável do Pai em vários rotinas. Essa variável quem fornece é o filho. Como faço ?

    Ela só pode se alimentada quando o form filho é fechado.

    Fiz da seguinte form, porém não funciona, quando o filho fecha que volta para o pai, a variável não está com o valor passado, alguém pode me dizer onde estou errando ?

    Form Pai, declarei uma variável: 

        public int nEmailRevisado;

    Form filho, estou passando o valor para ela: 

    private void btnRevisado_Click(object sender, EventArgs e)
            {
                FrmPrincipal FrmPai = new FrmPrincipal();
                FrmPai.nEmailRevisado = 1;
                this.Close();
            }


    Se ajudei? Marque como util.. Obrigado :D

    sexta-feira, 10 de abril de 2015 15:30

Respostas

  • Passa como parametro para o filho o form principal, assim vc pode alterar e ele guardar essa informação e não precisa re instaciar ele novamente que é o q eu acho q ocasionou o erro!

    Ex:

    FormPrincipal

    private void bt_Click(object sender, EventArgs e)
    {
        Form2 = new Form2(this);
    }

    Form2
    // Variavel
    FormPrincipal oDono;
    public CriarNotas(FormPrincipal _Dono)
    {
        InitializeComponent();
        oDono = _Dono;
    }
    
    

    Desta forma tudo que for alterado estará lah no from Principal qndo o form dois for fechado.

    "A mente que se abre para uma nova idéia, jamais voltará a seu tamanho original".

    sexta-feira, 10 de abril de 2015 16:26
  • Jaqueline,

    essa é a maneira que eu faço, não sei se é a melhor...

    Cria um classe chamada por exemplo: vGlobal (quero dizer com esse nome Variavel Global, serve para o projeto todo). Dentro da classe cria uma variável publica com {get; set;} como segue o exemplo:

    Classe / Variavel:


    Agora no formulário filho(form2) onde você precisa carregar as informações, chama a variável global e passa o valor.

    Repare que estou usando o exemplo no evento que fecha o formFilho.

    Quando fechar o formFilho(form2) carrega o valor na variável. Agora no formPai(form1) repare que estou usando no evento que ativa o form, quando ativado o form  carrego o valor da variável onde desejar... como segue no exemplo e o resultado final...

    espero ter ajudado em alguma coisa...

    Att.

    Thyago

    sexta-feira, 10 de abril de 2015 17:28

Todas as Respostas

  • Passa como parametro para o filho o form principal, assim vc pode alterar e ele guardar essa informação e não precisa re instaciar ele novamente que é o q eu acho q ocasionou o erro!

    Ex:

    FormPrincipal

    private void bt_Click(object sender, EventArgs e)
    {
        Form2 = new Form2(this);
    }

    Form2
    // Variavel
    FormPrincipal oDono;
    public CriarNotas(FormPrincipal _Dono)
    {
        InitializeComponent();
        oDono = _Dono;
    }
    
    

    Desta forma tudo que for alterado estará lah no from Principal qndo o form dois for fechado.

    "A mente que se abre para uma nova idéia, jamais voltará a seu tamanho original".

    sexta-feira, 10 de abril de 2015 16:26
  • Jaqueline,

    essa é a maneira que eu faço, não sei se é a melhor...

    Cria um classe chamada por exemplo: vGlobal (quero dizer com esse nome Variavel Global, serve para o projeto todo). Dentro da classe cria uma variável publica com {get; set;} como segue o exemplo:

    Classe / Variavel:


    Agora no formulário filho(form2) onde você precisa carregar as informações, chama a variável global e passa o valor.

    Repare que estou usando o exemplo no evento que fecha o formFilho.

    Quando fechar o formFilho(form2) carrega o valor na variável. Agora no formPai(form1) repare que estou usando no evento que ativa o form, quando ativado o form  carrego o valor da variável onde desejar... como segue no exemplo e o resultado final...

    espero ter ajudado em alguma coisa...

    Att.

    Thyago

    sexta-feira, 10 de abril de 2015 17:28
  • boa! 

    Mas e se, por exemplo, eu tenho um botão no frm1, que qdo clicado abre o frm2 para importar um CSV pro grid do frm2. O código de importação fica no frm1, e o grid que será preenchido fica no frm2, dá pra fazer isso? é uma prática ruim? senão, como eu chamo o frm2 com a rotina de importação? boto no activated? mas aí toda vez que ele for chamado vai rodar a rotina...

    segunda-feira, 16 de janeiro de 2017 01:06
  • Batagur, boa noite! 

    não faz sentido você ter a rotina de importar no form1 se os dados estão no frm2! é interessante deixar a rotina junto com os dados.

    Att.

    Thyago 

    domingo, 5 de fevereiro de 2017 01:17