c#订阅-发布模式简单示例

发布-订阅模型是指两个或多个不同对象,一个广播消息,其他的接受消息。发布者的广播不受接受者的影响,接受者的数量和对接受消息的处理与发布者无关,降低了对象之间的耦合性。

下面以两个窗口之间的通信示例

首先在vs里面新建一个windows窗体应用,自动生成Form1,然后添加一个窗口Form2,并在Form1和Form2中分别各添加一个button和一个文本框TextBox

双击Form1中button,进入代码编辑如下

namespace Forms
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void setTxt(string s)//接受一个字符串并在文本框内显示
        {
            textBox1.Text = s;
        }
        private void button1_Click(object sender, EventArgs e)//当按钮被点击
        {
            Form2 fm = new Form2();//实例化一个form2对象
            fm.onClicks += setTxt;//添加事件,见Form2
            fm.Show();//显示Form2窗口
        }
    }
}

双击Form2的button,进入代码编辑界面

namespace Forms
{
    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }
        public event Action<string> onClicks;//定义事件
        private void button1_Click(object sender, EventArgs e)//当按钮被点击
        {
            string s = textBox1.Text;//获取文本框输入内容
            onClicks(s);//执行事件并传入参数
        }
    }
}

在Form1界面编译启动,点击按钮打开Form2。

在Form2中输入的内容,点击form2按钮后,就会在form1中显示

同理也可以再新建form3,form4,通过向form2中onClick添加自己的方法,就能实现订阅。

原文地址:https://www.cnblogs.com/gaokaitai/p/10647479.html