Usuário com melhor resposta
Pegar valor de um form e usar em outro form

Pergunta
-
boa tarde amigos, eu preciso pegar um valor(int) de um form para utilizar em outro form
por ex: no form1 tenho a seguinte variável:
int iTipo = 0;
no form2 tenho a seguinte condição:
if (frm.iTipo == 0)
porem preciso declarar o form1 no form2 (form1 frm = new form1;) e com isso os valores das variáveis sao zerados.
qual a melhor forma de realizar esse processo ?
Respostas
-
Olá Daniel,
Aqui vão algumas dicas breves de como trabalhar com formulários no windows forms:
1 - Abertura de novos formulários
No exemplo abaixo utilizo o Form1 e o Form2, observe que no código do Form2 possuo um atributo publico... do qual consigo manipular do Form1
public partial class Form2 : Form { public string AtributoAcessadoPorOutroForm { get; set; } public Form2() { InitializeComponent(); } }
public partial class Form1 : Form { public Form1() { InitializeComponent(); Form2 newForm = new Form2(); newForm.AtributoAcessadoPorOutroForm = "TEXTO"; newForm.Show(); } }
2 -Acessar a instância de um formulário que está aberto
Para poder acessar o formulário que está aberto vc deve criar um atributo em sua classe e manter sua instância viva pelo tempo que for necessário.
Veja que no código do Form1 criamos um atributo que irá conter a instância do formulário que foi aberto, e que em outros trechos de código conseguimos interagir com o formulário que está aberto.
public partial class Form1 : Form { private Form2 newForm { get; set; } public Form1() { InitializeComponent(); newForm = new Form2(); newForm.AtributoAcessadoPorOutroForm = "TEXTO"; newForm.Show(); } public void OutroMetodo() { if (newForm == null) return; newForm.AtributoAcessadoPorOutroForm = "Estamos interagindo"; } public void MaisUmOutroMetodo() { if (newForm == null) return; newForm.AtributoAcessadoPorOutroForm = "Estamos interagindo novamente"; } }
3 - Acessar o formulário chamadorTambém é muito comum e necessário que façamos com que um formulário aberto interaja com o formulário que o abriu. Neste caso utilizado a propriedade Owner.
Sempre que for abrir um formulário, atribua um valor para este atributo, conforme o exemplo abaixo:
public partial class Form1 : Form { private Form2 newForm { get; set; } public Form1() { InitializeComponent(); newForm = new Form2(); newForm.AtributoAcessadoPorOutroForm = "TEXTO"; newForm.Owner = this; newForm.Show(); } }
-----------------------------------------------------------------------------
E o formulário chamado, para acessar o Form que o abriu deve fazer assim:
public partial class Form2 : Form { public string AtributoAcessadoPorOutroForm { get; set; } public Form2() { InitializeComponent(); if (this.Owner != null) { if (this.Owner is Form1) { Form1 formularioPai = (Form1)this.Owner; } } } }
Força e muito estudo.
Qualquer dúvida volte a postar.
[]s!
Fernando Henrique Inocêncio Borba Ferreira
while(alive){ this.WriteCode(); }
Blog: http://ferhenriquef.com/
Twitter: @ferhenrique- Sugerido como Resposta Vitor dos Santos sexta-feira, 11 de maio de 2012 22:13
- Marcado como Resposta Harley AraujoModerator segunda-feira, 14 de maio de 2012 14:37
-
Nessa thread respondi a mesma questão.
Você pode acessar através de uma propriedade estática como os amigos sugeriram ai.
Fábio Kiatkowski Engenheiro de Software
- Marcado como Resposta Harley AraujoModerator segunda-feira, 14 de maio de 2012 14:37
Todas as Respostas
-
static.
- Sugerido como Resposta Pablo Batista Cardoso quinta-feira, 10 de maio de 2012 22:40
-
como ficaria o código ?
- Editado Daniel Dutra quinta-feira, 10 de maio de 2012 18:50
-
-
-
Olá Daniel,
Aqui vão algumas dicas breves de como trabalhar com formulários no windows forms:
1 - Abertura de novos formulários
No exemplo abaixo utilizo o Form1 e o Form2, observe que no código do Form2 possuo um atributo publico... do qual consigo manipular do Form1
public partial class Form2 : Form { public string AtributoAcessadoPorOutroForm { get; set; } public Form2() { InitializeComponent(); } }
public partial class Form1 : Form { public Form1() { InitializeComponent(); Form2 newForm = new Form2(); newForm.AtributoAcessadoPorOutroForm = "TEXTO"; newForm.Show(); } }
2 -Acessar a instância de um formulário que está aberto
Para poder acessar o formulário que está aberto vc deve criar um atributo em sua classe e manter sua instância viva pelo tempo que for necessário.
Veja que no código do Form1 criamos um atributo que irá conter a instância do formulário que foi aberto, e que em outros trechos de código conseguimos interagir com o formulário que está aberto.
public partial class Form1 : Form { private Form2 newForm { get; set; } public Form1() { InitializeComponent(); newForm = new Form2(); newForm.AtributoAcessadoPorOutroForm = "TEXTO"; newForm.Show(); } public void OutroMetodo() { if (newForm == null) return; newForm.AtributoAcessadoPorOutroForm = "Estamos interagindo"; } public void MaisUmOutroMetodo() { if (newForm == null) return; newForm.AtributoAcessadoPorOutroForm = "Estamos interagindo novamente"; } }
3 - Acessar o formulário chamadorTambém é muito comum e necessário que façamos com que um formulário aberto interaja com o formulário que o abriu. Neste caso utilizado a propriedade Owner.
Sempre que for abrir um formulário, atribua um valor para este atributo, conforme o exemplo abaixo:
public partial class Form1 : Form { private Form2 newForm { get; set; } public Form1() { InitializeComponent(); newForm = new Form2(); newForm.AtributoAcessadoPorOutroForm = "TEXTO"; newForm.Owner = this; newForm.Show(); } }
-----------------------------------------------------------------------------
E o formulário chamado, para acessar o Form que o abriu deve fazer assim:
public partial class Form2 : Form { public string AtributoAcessadoPorOutroForm { get; set; } public Form2() { InitializeComponent(); if (this.Owner != null) { if (this.Owner is Form1) { Form1 formularioPai = (Form1)this.Owner; } } } }
Força e muito estudo.
Qualquer dúvida volte a postar.
[]s!
Fernando Henrique Inocêncio Borba Ferreira
while(alive){ this.WriteCode(); }
Blog: http://ferhenriquef.com/
Twitter: @ferhenrique- Sugerido como Resposta Vitor dos Santos sexta-feira, 11 de maio de 2012 22:13
- Marcado como Resposta Harley AraujoModerator segunda-feira, 14 de maio de 2012 14:37
-
Nessa thread respondi a mesma questão.
Você pode acessar através de uma propriedade estática como os amigos sugeriram ai.
Fábio Kiatkowski Engenheiro de Software
- Marcado como Resposta Harley AraujoModerator segunda-feira, 14 de maio de 2012 14:37
-