<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Loading...

    java .net

    C# 中的“事件”

    C# 中的事件是當(dāng)對(duì)象滿足一定條件,發(fā)生某些事情時(shí),類向該類的客戶提供通知的一種方法。使用事件,擁有該事件的對(duì)象不必知道需要通知誰,一旦滿足了某個(gè)條件,將自動(dòng)調(diào)用該事件,正確通知每個(gè)需要通知的對(duì)象。通過使用事件,提高了程序的模塊化程度。
      
      要在程序中使用自定義事件,需按以下步驟進(jìn)行:
      
      1、聲明事件
      
      要在類內(nèi)聲明事件,首先必須聲明該事件的委托類型:
      public delegate void SelectionChangedEventHandler(object sender,
      SelectionChangedEventArgs e);
      
      說明:由于本示例程序需在事件中傳遞數(shù)據(jù),因此定義了EventArgs的派生類SelectionChangedEventArgs
      public class SelectionChangedEventArgs : EventArgs
      {
      private string m_selection;
      
      //本屬性用于傳遞事件數(shù)據(jù)
      public string Selection
      {
      get { return m_selection; }
      }
      
      public SelectionChangedEventArgs(string selection)
      {
      m_selection = selection;
      }
      }
      
      委托類型定義傳遞給處理該事件的方法的一組參數(shù)。多個(gè)事件可共享相同的委托類型,因此僅當(dāng)尚未聲明任何合適的委托類型時(shí)才需要執(zhí)行該步驟。
      
      接下來,聲明事件本身:
      public event SelectionChangedEventHandler SelectionChanged;
      
      2、調(diào)用事件
      
      如果沒有任何客戶將委托與該事件掛鉤,該字段將為空;否則該字段引用應(yīng)在調(diào)用該事件時(shí)調(diào)用的委托。因此,調(diào)用事件時(shí)通常先檢查是否為空,然后再調(diào)用事件。
      public class Form2 : System.Windows.Forms.Form
      {
      ... ...
      
      public event SelectionChangedEventHandler SelectionChanged;
      
      ... ...
      
      private void comboBox1_SelectedIndexChanged(object sender, System.EventArgs e)
      {
      if (SelectionChanged != null)
      {
      SelectionChangedEventArgs E = new SelectionChangedEventArgs(comboBox1.Text);
      SelectionChanged(this, E);
      }
      }
      }
      
      3、與事件掛鉤
      
      為了開始接收事件調(diào)用,客戶代碼先創(chuàng)建事件類型的委托,該委托引用應(yīng)從事件調(diào)用的方法。然后它使用 += 將該委托寫到事件可能連接到的其他任何委托上。
      public class Form1 : System.Windows.Forms.Form
      {
      ... ...
      
      private Form2 m_frm2;
      
      ... ...
      
      public Form1()
      {
      ... ...
      
      m_frm2 = new Form2();
      
      //與事件掛鉤
      m_frm2.SelectionChanged += new SelectionChangedEventHandler(frm2_SelectionChanged);
      }
      
      ... ...
      
      private void button1_Click(object sender, System.EventArgs e)
      {
      m_frm2.ShowDialog();
      }
      
      private void frm2_SelectionChanged(object sender, SelectionChangedEventArgs e)
      {
      //獲取事件傳遞過來的數(shù)據(jù)
      textBox1.Text = e.Selection;
      }
      }

    posted on 2008-08-26 22:06 閱讀(120) 評(píng)論(0)  編輯  收藏


    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     

    公告

    希望有一天

    我能用鼠標(biāo)雙擊我的錢包

    然后選中一張100元

    按住“ctrl+c”

    接著不停的“ctrl+v”

    嘻嘻~~~笑醒~~~



    導(dǎo)航

    <2008年8月>
    272829303112
    3456789
    10111213141516
    17181920212223
    24252627282930
    31123456

    統(tǒng)計(jì)

    常用鏈接

    留言簿(6)

    隨筆分類(102)

    隨筆檔案(398)

    文章分類

    文章檔案(10)

    有趣網(wǎng)絡(luò)

    搜索

    積分與排名

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 一个人看的hd免费视频| 亚洲免费观看视频| 中文字幕亚洲无线码| 国产亚洲玖玖玖在线观看| 国产精品免费看久久久香蕉| 毛片大全免费观看| 亚洲伦另类中文字幕| 美女啪啪网站又黄又免费| 国产无人区码卡二卡三卡免费| 亚洲av无码不卡一区二区三区| 一级毛片a女人刺激视频免费| 亚洲综合视频在线| 两个人看的www视频免费完整版| 国产精品免费电影| 亚洲性线免费观看视频成熟| 亚洲精品在线免费观看| 亚洲国产综合精品中文第一区| 欧洲美熟女乱又伦免费视频| 国产亚洲精品影视在线| 激情综合色五月丁香六月亚洲| 大学生一级毛片免费看| 亚洲久悠悠色悠在线播放| 久久久久久A亚洲欧洲AV冫| GOGOGO高清免费看韩国| 亚洲AV永久纯肉无码精品动漫| 免费羞羞视频网站| 日韩插啊免费视频在线观看| 亚洲人成电影亚洲人成9999网| 国产又黄又爽又猛的免费视频播放| 午夜无码A级毛片免费视频| 亚洲欧洲国产日韩精品| 免费一级毛片在线播放不收费| 一级毛片a免费播放王色| 亚洲AV无码一区二区三区人| 好吊妞视频免费视频| 老司机精品视频免费| 亚洲国产超清无码专区| 成人免费无码大片a毛片| 亚洲AV无码一区二区三区网址| 国产精品久久免费视频| 国产精品永久免费10000|