熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> ASP編程 >> 正文

自定義事件實現不同窗體間的通訊C#篇

2013-11-15 12:48:33  來源: ASP編程 

  C# 中的事件是當對象滿足一定條件發生某些事情時類向該類的客戶提供通知的一種方法使用事件擁有該事件的對象不必知道需要通知誰一旦滿足了某個條件將自動調用該事件正確通知每個需要通知的對象通過使用事件提高了程序的模塊化程度
  
  要在程序中使用自定義事件需按以下步驟進行
  
  聲明事件
  
  要在類內聲明事件首先必須聲明該事件的委托類型
  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;
  
  調用事件
  
  如果沒有任何客戶將委托與該事件掛鉤該字段將為空否則該字段引用應在調用該事件時調用的委托因此調用事件時通常先檢查是否為空然後再調用事件
  public class Form : SystemWindowsFormsForm
  {
  
  
  public event SelectionChangedEventHandler SelectionChanged;
  
  
  
  private void comboBox_SelectedIndexChanged(object sender SystemEventArgs e)
  {
  if (SelectionChanged != null)
  {
  SelectionChangedEventArgs E = new SelectionChangedEventArgs(comboBoxText);
  SelectionChanged(this E);
  }
  }
  }
  
  與事件掛鉤
  
  為了開始接收事件調用客戶代碼先創建事件類型的委托該委托引用應從事件調用的方法然後它使用 += 將該委托寫到事件可能連接到的其他任何委托上
  public class Form : SystemWindowsFormsForm
  {
  
  
  private Form m_frm;
  
  
  
  public Form()
  {
  
  
  m_frm = new Form();
  
  //與事件掛鉤
  m_frmSelectionChanged += new SelectionChangedEventHandler(frm_SelectionChanged);
  }
  
  
  
  private void button_Click(object sender SystemEventArgs e)
  {
  m_frmShowDialog();
  }
  
  private void frm_SelectionChanged(object sender SelectionChangedEventArgs e)
  {
  //獲取事件傳遞過來的數據
  textBoxText = eSelection;
  }
  }
  
  本示例效果如下圖所示
  
From:http://tw.wingwit.com/Article/program/ASP/201311/21673.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.