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添加自己的方法,就能實現訂閱。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM