正確通知每個(gè)需要通知的對(duì)象。通過(guò)使用事件,提高了程序的模塊化程度。要在程序中使用自定義事件,需按以下步驟進(jìn)行:
1、聲明事件
要在類內(nèi)聲明事件,首先必須聲明該事件的委托類型:
public delegate void SelectionChangedEventHandler(object sender,
SelectionChangedEventArgs e);
說(shuō)明:由于本示例程序需在事件中傳遞數(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í)行該步驟。
接下來(lái),聲明事件本身:
public event SelectionChangedEventHandler SelectionChanged;
2、調(diào)用事件
如果沒(méi)有任何客戶將委托與該事件掛鉤,該字段將為空;否則該字段引用應(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);
}
}
}
1、聲明事件
要在類內(nèi)聲明事件,首先必須聲明該事件的委托類型:
public delegate void SelectionChangedEventHandler(object sender,
SelectionChangedEventArgs e);
說(shuō)明:由于本示例程序需在事件中傳遞數(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í)行該步驟。
接下來(lái),聲明事件本身:
public event SelectionChangedEventHandler SelectionChanged;
2、調(diào)用事件
如果沒(méi)有任何客戶將委托與該事件掛鉤,該字段將為空;否則該字段引用應(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);
}
}
}

