利用EventHandler來實(shí)現(xiàn)兩個(gè)窗體間的事件調(diào)用

2010-08-28 10:50:27來源:西部e網(wǎng)作者:

  在.NET中,窗體也被定義為一個(gè)類,所以要想調(diào)用窗體中的某個(gè)方法,除了要將要調(diào)用的方法設(shè)為public外,還得創(chuàng)建一個(gè)窗體類的實(shí)例。然而,在下面這種情況下,就是當(dāng)我們打開了窗體1(有了此窗體的一個(gè)實(shí)例),接著打開了窗體2,接下來我們想通過觸發(fā)窗體2中的某個(gè)事件來調(diào)用窗體1中的某個(gè)方法,而這時(shí)我們又不能再創(chuàng)建窗體的新的實(shí)例了,怎么辦?
  解決的辦法之一就是利用.NET中提供的System.EventHandler來實(shí)現(xiàn)。方法如下:
  建立一個(gè)有兩個(gè)Form的WindowsApplication,在Form1和Form2中各添加一個(gè)Button,下面我們來添加一些代碼。
  首先,先在Form2中添加。

  在Form2中添加一個(gè)System.EventHandler

         publlic event System.EventHandler CallMessage;

  在Form2中Button的Click事件中調(diào)用OnClicks

         private void button1_Click(object sender, System.EventArgs e)
         {
             this.CallMessage(sender,e);
         }

  接下來,在Form1中添加。
  在Form1中添加一個(gè)方法,方法的參數(shù)必不可少

         public void ShowMessage(object sender, EventArgs e)
         {
             MessageBox.Show("another form call this method!");
         }

  在Form1中Button的Click事件中創(chuàng)建一個(gè)Form2的實(shí)例,并加入Form2的CallMessage的實(shí)現(xiàn)方法

         private void button1_Click(object sender, System.EventArgs e)
         {
           Form2 frm=new Form2();
           frm.CallMessage+=new EventHandler(ShowMessage);
           frm.ShowDialog();
         }

  好了,我們的目的就達(dá)到了。
  寫的是簡(jiǎn)單了些,希望能起到拋磚引玉的作用。
關(guān)鍵詞:C#