三个form :form1,form2,form3。委托类型为Action<string>。
form1是主窗口。form2和form3是子窗口。
form1把form2的信息传递给form3。
form2发出消息。
form3接收消息。
public partial class Form1 : Form
{
private Form2 form2 = new Form2();
private Form3 form3 = new Form3();
public Form1()
{
InitializeComponent();
form2.action += new Action<string>(form3.Recv1);
form2.action.Invoke("开始");//事件不能执行,委托可以执行。
form2.Show();
form3.Show();
}
}
public partial class Form2 : Form
{
public Action<string> action;
//public event Action<string> action;
public Form2()
{
InitializeComponent();
action = new Action<string>(Recv1);
action += new Action<string>(Recv2);
}
private void button1_Click(object sender, EventArgs e)
{
action.Invoke(textBox1.Text);
}
private void Recv1(string str)
{
textBox2.Text = DateTime.Now.ToString() + ":" + str;
Thread.Sleep(1000);
}
private void Recv2(string str)
{
textBox3.Text = DateTime.Now.ToString() + ":" + str;
Thread.Sleep(1000);
}
}
public partial class Form3 : Form
{
public Form3()
{
InitializeComponent();
}
public void Recv1(string str)
{
textBox2.Text = DateTime.Now.ToString() + ":" + str;
Thread.Sleep(1000);
}
}
委托和事件都可以外部添加方法。
但是委托可以外部触发,事件不能外部触发。