发布订阅(委托)***action和func***
namespace UI.Test
{//发布者
public partial class FormB : Form
{
public FormB()
{
InitializeComponent();
}
//委托类型1action <T> 无返回值的委托类型
//2,func<T> 又返回值的委托类型
public event Action<string> SetTxtEvent;
private void button1_Click(object sender, EventArgs e)
{
// 调用事件,事件中绑定的方法都会被执行
SetTxtEvent(textBox1.Text);
}
}
}
//订阅者
namespace UI.Test
{
public partial class FormA : Form
{
public FormA()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
//打开一个新的窗体
FormB formB = new FormB();
//为新的窗体,绑定事件处理函数
formB.SetTxtEvent += setTxt;
formB.Show();
}
private void setTxt(string txt1)
{
//用于事件的处理方法。将传递过来的值显示到文本框
textBox1.Text=txt1;
}
}
}
只要发布者改变,所有订阅者都会改变