亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

如何訂閱Form的自定義事件

2019-11-14 13:42:41
字體:
來源:轉載
供稿:網友

   Window Form類有很多的屬性/方法和事件,其中事件屬于一種發布訂閱模式 。訂閱發布模式定義了一種一對多的依賴關系,讓多個訂閱者對象同時監聽某一個主體對象。這個主體對象在自身狀態變化時,會通知所有訂閱者對象,使它們能夠自動更新自己的狀態。 當一個對象的改變需要同時改變其他對象,而且無需關心具體有多少對象需要改變時,就特別適合用此種模式。本文將演示如何在窗體上自定義一個事件(custom event) : 

1 自定義一個CustomEventArgs類

  一般自定義的事件都有一個參數,繼承自EventArgs.此處我們自定一個CustomEventArgs,類中通過自定義字段來存儲參數的值:

 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5  6 namespace CustomEventsDemo 7 { 8     public class CustomEventArgs:EventArgs 9     {10         //自定義字段用于存儲值11         public object Tag;12         public string Message;13         public CustomEventArgs()14         {15             16         }17         public CustomEventArgs(string message, object tag)18         {19             Message = message;20             Tag = tag;21         }22     }23 }

 2 自定義一個事件

   接下來我們創建一個FormPublisher窗體,然后用 event EventHandler<CustomEventArgs> customEvent;event EventHandler<CustomEventArgs> customSecondEvent和來自定義兩個custom Event事件,它們的事件參數為CustomEventArgs.在窗體加載事件中我們觸發兩個事件(這個順序會影響在窗體加載時訂閱者的事件響應順序.如果我們創建一個窗體繼承此FormPublisher的話,我們會在此窗體的事件面板中看到下圖:

 1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Data; 5 using System.Drawing; 6 using System.Linq; 7 using System.Text; 8 using System.Windows.Forms; 9 10 namespace CustomEventsDemo11 {12     public partial class FormPublisher : Form13     {14         //定義兩個事件15         public event EventHandler<CustomEventArgs> customEvent;16         public event EventHandler<CustomEventArgs> customSecondEvent;17         public FormPublisher()18         {19             InitializeComponent();20         }21 22         PRivate void FormWithCutomEvent_Load(object sender, EventArgs e)23         {24             //確定自定義事件的執行順序,繼承此窗體的子類窗體加載時的默認順序25             if (customEvent != null)26             {27                 CustomEventArgs customEventArgs = new CustomEventArgs(this.textBox1.Text, "customEvent");28                 customEvent(this, customEventArgs);29             }30             if (customSecondEvent != null)31             {32 33                 CustomEventArgs customEventArgs = new CustomEventArgs(this.textBox1.Text, "customSecondEvent");34                 customSecondEvent(this, customEventArgs);35             }36 37         }38 39         private void button1_Click(object sender, EventArgs e)40         {41             42             this.textBox2.AppendText(this.textBox1.Text + "/r/n");43             //this.textBox1.Text = "";44             if (customSecondEvent != null)45             {46                 CustomEventArgs customEventArgs = new CustomEventArgs(this.textBox1.Text, "customSecondEvent");47                 //觸發事件48                 customSecondEvent(this, customEventArgs);49             }50             if (customEvent != null)51             {52                 CustomEventArgs customEventArgs = new CustomEventArgs(this.textBox1.Text, "customEvent");53                 //觸發事件54                 customEvent(this, customEventArgs);55             }56         }57     }58 }

3 訂閱事件

  下面定義一個FormSubscriber窗體來訂閱自定義事件,我們要定義另一個窗體的事件,必須要先實例化那個窗體,否則會調用失敗:

 1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Data; 5 using System.Drawing; 6 using System.Linq; 7 using System.Text; 8 using System.Windows.Forms; 9 10 namespace CustomEventsDemo11 {12     public partial class FormSubscriber : Form13     {14         FormPublisher form = null;15        public FormSubscriber()16         {17             InitializeComponent();18             //啟動2個窗體19             form = new FormPublisher();20             form.Visible = true;21            //訂閱事件22             form.customSecondEvent += form_customSecondEvent;23            //訂閱事件24             form.customEvent += form_customEvent;25            //把發布窗體實例化后傳入第二個訂閱窗體中,否則不能訂閱26             FormSubScriber2 from2 = new FormSubScriber2(form);27             from2.Visible = true;28         }29 30        void form_customSecondEvent(object sender, CustomEventArgs e)31        {32            this.textBox1.AppendText("Message from Publisher " + e.Message + " from " + e.Tag + "/r/n");33        }34 35        void form_customEvent(object sender, CustomEventArgs e)36        {37            this.textBox1.AppendText("Message from Publisher " + e.Message + " from " + e.Tag + "/r/n");38        }39 40         private void FormSubscriber_Load(object sender, EventArgs e)41         {42             43         }44     }45 }

   另一個窗體也進行訂閱:

 1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Data; 5 using System.Drawing; 6 using System.Linq; 7 using System.Text; 8 using System.Windows.Forms; 9 10 namespace CustomEventsDemo11 {12     public partial class FormSubScriber2 : Form13     {14      15         public FormSubScriber2()16         {17             InitializeComponent();18         }19         public FormSubScriber2(FormPublisher form)20         {21             InitializeComponent();22             //訂閱form自定義事件23             form.customEvent += form_customEvent;24         }25         void form_customEvent(object sender, CustomEventArgs e)26         {27             this.textBox1.AppendText("Message from Publisher " + e.Message + " from " + e.Tag + "/r/n");28         }29 30         private void FormSubScriber2_Load(object sender, EventArgs e)31         {32 33         }34     }35 }

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
色与欲影视天天看综合网| 国产日韩综合一区二区性色av| 91免费视频网站| 激情成人中文字幕| 亚洲精品久久久久久久久久久| 日本三级韩国三级久久| 成人性生交大片免费观看嘿嘿视频| 国产精品免费视频久久久| 美乳少妇欧美精品| 国产成人aa精品一区在线播放| 一个人看的www欧美| 自拍偷拍亚洲欧美| 久久激情视频久久| 久久成人精品一区二区三区| 91情侣偷在线精品国产| 一区二区三区国产在线观看| 久久久久国产一区二区三区| 揄拍成人国产精品视频| 97视频在线观看免费高清完整版在线观看| 欧美野外wwwxxx| 亚洲女人天堂色在线7777| 中文国产成人精品久久一| 亚洲最大在线视频| 亚洲a级在线观看| 另类天堂视频在线观看| 九九精品视频在线| 国产成人aa精品一区在线播放| 亚洲香蕉在线观看| 18久久久久久| 另类天堂视频在线观看| 91高清免费视频| 成人免费福利视频| 九色成人免费视频| 国产精品一区电影| 亚洲2020天天堂在线观看| 欧美中文字幕第一页| 亚洲自拍小视频免费观看| 亚洲石原莉奈一区二区在线观看| 亚洲在线一区二区| 亚洲精品一区二区网址| 欧美日韩黄色大片| 亚洲人精品午夜在线观看| 欧美成人四级hd版| 91免费精品视频| 欧美老女人bb| 久久久久久九九九| 久久视频在线播放| 成人免费观看49www在线观看| 亚洲欧美一区二区三区四区| 久久在线视频在线| 亚洲高清福利视频| 欧美日韩亚洲视频一区| 国产一区二区黑人欧美xxxx| 久久精品国产一区二区三区| 欧美午夜女人视频在线| 亚洲人成毛片在线播放| 久久久国产一区| 91精品国产色综合久久不卡98| 日韩网站在线观看| 欧美在线观看网站| 91wwwcom在线观看| 日韩av成人在线观看| 久久久久久国产免费| 亚洲免费视频在线观看| 91av在线看| 另类色图亚洲色图| 欧美伊久线香蕉线新在线| 午夜精品三级视频福利| 国产亚洲精品久久久久久牛牛| 日韩有码在线播放| 亚洲激情在线视频| 亚洲最大在线视频| 国产欧美一区二区三区视频| 69国产精品成人在线播放| 操91在线视频| 人人做人人澡人人爽欧美| 国产日韩精品在线播放| 成人精品在线观看| 乱亲女秽乱长久久久| 国产精品视频区1| 亚洲成人在线视频播放| 国产精品成熟老女人| 亚洲网站视频福利| 久久久99久久精品女同性| 亚洲人成欧美中文字幕| 国产精品国产三级国产专播精品人| 欧美激情视频一区二区三区不卡| 国产精品老女人精品视频| 午夜剧场成人观在线视频免费观看| 欧美一区二区三区……| 色综合久久88色综合天天看泰| 欧美日韩福利在线观看| 亚洲一区二区少妇| 国产亚洲精品一区二区| 欧美猛交ⅹxxx乱大交视频| 亚洲精品aⅴ中文字幕乱码| 国产精品免费一区豆花| 亚洲第一免费网站| www.日韩不卡电影av| 日韩精品极品毛片系列视频| 97视频在线观看免费高清完整版在线观看| 亚洲国产精品嫩草影院久久| 精品久久久久久久中文字幕| 日韩成人在线视频观看| 国产成人福利视频| 欧美成人三级视频网站| 亚洲激情视频在线| 91久久国产综合久久91精品网站| 最近2019中文字幕第三页视频| 国产精品久久在线观看| 不卡伊人av在线播放| 亚洲性av在线| 亚洲成av人乱码色午夜| 国产精品爽爽ⅴa在线观看| 91精品国产网站| 成人国产精品色哟哟| 亚洲福利在线视频| 日韩精品在线视频美女| 日韩精品高清在线| 一区二区中文字幕| 国产精品免费观看在线| 久久综合久久88| 亚洲丁香婷深爱综合| 久久精品免费播放| 久久天堂av综合合色| 91欧美精品成人综合在线观看| 在线播放日韩欧美| 日韩电影免费在线观看中文字幕| 日韩av在线一区二区| 欧美精品国产精品日韩精品| 久久综合五月天| 久久69精品久久久久久国产越南| 欧美激情在线视频二区| 亚洲区免费影片| 97在线视频免费播放| 亚洲欧美另类人妖| 91亚洲精品一区二区| 成人福利视频网| 国产精品热视频| 日韩一区二区精品视频| 精品香蕉一区二区三区| 日本高清久久天堂| 亚洲国产精品成人一区二区| 日韩有码片在线观看| 九九热精品视频| 欧美第一黄网免费网站| 日本成人精品在线| 日韩在线观看精品| 不卡在线观看电视剧完整版| 国产日本欧美一区二区三区| 亚洲成人av片| 日韩精品亚洲元码| 欧美插天视频在线播放| 成人精品一区二区三区电影免费| 日韩在线视频二区| 成人国产亚洲精品a区天堂华泰| 欧美疯狂xxxx大交乱88av| 精品国产一区二区三区四区在线观看| 亚洲男人天堂2024| 亚洲日本中文字幕免费在线不卡| 国产精品日日做人人爱| 中文字幕久热精品在线视频| 久久久电影免费观看完整版| 久热精品视频在线观看|