Delegates - exemplo prático

<< Click to Display Table of Contents >>

Navigation:  Outros >

Delegates - exemplo prático

Previous pageReturn to chapter overviewNext page

Monte 2 formulários com 1 textbox cada e coloque KeyPreview = true no form1. E use o código abaixo

 

form1

 

        private void Form1_KeyDown(object sender, KeyEventArgs e)

        {

            // se a tecla for F9

            if (e.KeyData == Keys.F9)

            {

                // instancia o Form2

                Form2 frm = new Form2();

                

                // cria um evento dinamico usando delegate

                frm.retorno += new Form2.Retonar(frm_retorno);

                

                // dá um Show no Form2

                frm.Show();

            }

        }

 

        // evento dinamico criado, receberá o dado que vem do Form2

        void frm_retorno(string x)

        {

            // alimenta o TextBox do Form1 com o valor digitado no Form2

            this.textBox1.Text = x;

        }

 

 

form2

 

        // cria um delegate para retornar valor para o form1

        public delegate void Retonar(string x);

        

        // cria um evento dinamico para retornar os dados para o form1

        public event Retonar retorno;

 

        // quando clicar no botão do form2

        private void button1_Click(object sender, EventArgs e)

        {

            // chama evento dinamico retornando para o Form1 o valor que tem no TextBox do Form2

            retorno(this.textBox1.Text);

 

            // fecha o Form2

            Close();

        }

 

telas

 

Ao apresentar o form1, pressione F9, irá mostrar o form2, digite algo e clique no botão OK:

 

delegates1

 

Os dados são transferidos para o form1 através de delegates:

 

delegates2