Usuário com melhor resposta
Passar informações de um form para outro

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
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".
- Marcado como Resposta Jaqueline Rodrigues sexta-feira, 10 de abril de 2015 17:47
-
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
- Marcado como Resposta Jaqueline Rodrigues sexta-feira, 10 de abril de 2015 17:47
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".
- Marcado como Resposta Jaqueline Rodrigues sexta-feira, 10 de abril de 2015 17:47
-
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
- Marcado como Resposta Jaqueline Rodrigues sexta-feira, 10 de abril de 2015 17:47
-
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...
-