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 Alencar



Esse 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

Fernando Passaia de Alencar

Fernando Passaia de Alencar - Analista/Desenvolvedor de Sistemas, estudante do último ano de Sistemas de Informação, possui experiência em desenvolvimento com C#, ASP.NET e Flash e outras ferramentas. Possui conhecimento de regras de negócio em comércios e já desenvolveu sistemas voltados a área de automação de negócios