|
<< Click to Display Table of Contents >> Delegates - exemplo prático |
![]() ![]()
|
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:

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