自訂事件實現不同表單間的通訊C#篇

來源:互聯網
上載者:User
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;
  }
  }
  
  本樣本效果如所示:
  
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.