<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# 中的事件是當對象滿足一定條件,發生某些事情時,類向該類的客戶提供通知的一種方法。使用事件,擁有該事件的對象不必知道需要通知誰,一旦滿足了某個條件,將自動調用該事件,正確通知每個需要通知的對象。通過使用事件,提高了程序的模塊化程度。
      
      要在程序中使用自定義事件,需按以下步驟進行:
      
      1、聲明事件
      
      要在類內聲明事件,首先必須聲明該事件的委托類型:
      public delegate void SelectionChangedEventHandler(object sender,
      SelectionChangedEventArgs e);
      
      說明:由于本示例程序需在事件中傳遞數據,因此定義了EventArgs的派生類SelectionChangedEventArgs
      public class SelectionChangedEventArgs : EventArgs
      {
      private string m_selection;
      
      //本屬性用于傳遞事件數據
      public string Selection
      {
      get { return m_selection; }
      }
      
      public SelectionChangedEventArgs(string selection)
      {
      m_selection = selection;
      }
      }
      
      委托類型定義傳遞給處理該事件的方法的一組參數。多個事件可共享相同的委托類型,因此僅當尚未聲明任何合適的委托類型時才需要執行該步驟。
      
      接下來,聲明事件本身:
      public event SelectionChangedEventHandler SelectionChanged;
      
      2、調用事件
      
      如果沒有任何客戶將委托與該事件掛鉤,該字段將為空;否則該字段引用應在調用該事件時調用的委托。因此,調用事件時通常先檢查是否為空,然后再調用事件。
      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、與事件掛鉤
      
      為了開始接收事件調用,客戶代碼先創建事件類型的委托,該委托引用應從事件調用的方法。然后它使用 += 將該委托寫到事件可能連接到的其他任何委托上。
      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)
      {
      //獲取事件傳遞過來的數據
      textBox1.Text = e.Selection;
      }
      }

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


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     

    公告

    希望有一天

    我能用鼠標雙擊我的錢包

    然后選中一張100元

    按住“ctrl+c”

    接著不停的“ctrl+v”

    嘻嘻~~~笑醒~~~



    導航

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

    統計

    常用鏈接

    留言簿(6)

    隨筆分類(102)

    隨筆檔案(398)

    文章分類

    文章檔案(10)

    有趣網絡

    搜索

    積分與排名

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲AV成人无码久久精品老人| 久久久青草青青国产亚洲免观| 亚洲天堂中文资源| 三级黄色片免费看| 日韩一卡2卡3卡4卡新区亚洲| 亚洲女子高潮不断爆白浆| 国产1024精品视频专区免费| 亚洲图片中文字幕| 成人免费视频77777| 国产婷婷综合丁香亚洲欧洲| 永久免费av无码不卡在线观看| 亚洲国产午夜精品理论片| 日本XXX黄区免费看| 亚洲不卡中文字幕| 国内一级一级毛片a免费| 亚洲精品国产摄像头| 国产成人免费片在线视频观看| 国产99久久亚洲综合精品| 亚洲精品和日本精品| 91福利免费网站在线观看| 亚洲国产精品热久久| 免费看男女下面日出水来| 精品亚洲成A人无码成A在线观看| 成人免费福利电影| 特级av毛片免费观看| 丁香五月亚洲综合深深爱| 久久精品国产大片免费观看| 亚洲码在线中文在线观看| 成人最新午夜免费视频| 日本高清不卡中文字幕免费| 人人狠狠综合久久亚洲88| 亚洲成人免费电影| 亚洲综合激情五月丁香六月| 亚洲国产婷婷综合在线精品 | 国产jizzjizz视频全部免费| 午夜成人无码福利免费视频| 亚洲AV综合色区无码另类小说| 1024免费福利永久观看网站| 一二三区免费视频| 亚洲免费视频网址| 久久乐国产精品亚洲综合|