Desenvolvimento - C#
Trocando informações entre WINDOWS-FORMS em C#
Esse artigo fala sobre como trocar parâmetros e ter acesso de um FORM dentro de outro FORM em C#.
por Fernando Passaia de AlencarEsse
artigo foi escrito baseado na dificuldade pessoal que eu mesmo encontrei, ao
tentar localizar na internet informações sobre como trocar informações de um
form com o outro... Ou seja, passar ou ter visível parâmetros do FORM A no FORM
B, e controlar o FORM A de dentro do FORM B. Após conseguir a solução do
problema, decidi escrever esse artigo visando facilitar para outras pessoas que
posteriormente busquem essa informação. Essa técnica é conhecida no mundo da
O.O como Polimorfismo.
Nosso exemplo é bem simples, no nosso FORM A temos uma TEXTBOX e um Botão
“AbrirFormB”, e no nosso FORM B também temos uma TextBox e um botão alterar.
Qual a lógica? Ao clicar no botão “AbrirFormB”, o FormB abrirá e a textbox do
mesmo estará com o mesmo valor da TextBox do FormA, ao editar o texto no FORMB
e clicar em “ALTERAR”, o valor será alterado no FORMA, mostrando como o FORM B
pode alterar e manipular o FORM A através desse conceito. O exemplo é simples e
apenas para visualizar o exemplo, mas poderia ser usado com qualquer componente,
um DataGrid, um DataTable em memória, uma caixa de imagem, seja o que for.
Nossa interface se baseia em:
Resumindo: Ao clicar na Button do FORM A, o FORM B será aberto com e o mesmo
valor do TextBox será atribuído ao text. Ao clicar em ALTERAR no FORM B, o text
do FORM A será alterado. O código do FORM A e do FORM B seguem abaixo
totalmente comentados, de modo que ficará fácil o entendimento.
NOTA: A propriedade MODIFIERS das textbox precisam ser alteradas para PUBLICAS
para serem acessadas dentro de outras classes – por padrão elas vem por
private.
Código
do FORM A:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace Artigo_Polimorfismo
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
//botao que ABRE o FORM B
private void button1_Click(object sender, EventArgs e)
{
Form2 formB = new Form2(this); //this, significa que estou passando ESSA classe (instância dela) como parametro
formB.Show();
}
}
}
Código do FORM B (manipulando o FORM A):
using
System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace Artigo_Polimorfismo
{
public partial class Form2 : Form
{
Form1 instanciaDoForm1; //crio um objeto do tipo FORM 1, que será usado dentro da classe
//inicializador do FORM
public Form2(Form1 frm1) //recebo por parametro um objeto do tipo FORM1
{
InitializeComponent();
instanciaDoForm1 = frm1; //atribuo a instancia recebida pelo construtor a minha variavel interna
//associo o mesmo texto do tbxTextBoxFormA ao meu FORM B
tbxTextBoxFormB.Text = instanciaDoForm1.tbxTextBoxFormA.Text.ToString();
}
//botao alterar
private void button1_Click(object sender, EventArgs e)
{
//passo para a textbox do FORM A o mesmo texto que está na minha do FORM B
instanciaDoForm1.tbxTextBoxFormA.Text = tbxTextBoxFormB.Text.ToString();
instanciaDoForm1.tbxTextBoxFormA.Refresh(); //recarrego ela
}
}
}
E ai está o projeto funcionando, ao abrir o FORM B, alterar o Texto da TextBox e clicar no ALTERAR, o FORM B altera o Text do FORM A:
Espero que esse artigo tenha ajudado,
Acho que o exemplo foi bem simples porém resolve qualquer problema nesse
sentido.
Dúvidas, sugestões serão muito bem vindas e respondidas através do e-mail,
Até o próximo artigo e boa programação,
Fernando Passaia de Alencar – Analista/Desenvolvedor
de Sistemas
FuturaData Tecnologia em Sistemas de Informação - www.futuradata.com.br
E-mail/Msn/Skype/GoogleTalk: fernandopassaia@futuradata.com.br