一篇將自定義事件(定義委託、定義事件、通過委託綁定事件觸發函數、觸發事件的函數、以及觸
發事件函數的函數,行爲事件觸發前者)、System.EventArgs 事件數據類基類詮釋的很不錯的一篇文章。
1.定義委託
public delegate void LabelContextChangedHandler(object sender,
public delegate void LabelContextChangedHandler(object sender,
LabelContextChangedEventArgs e);
2.定義事件
public event LabelContextChangedHandler LabelContextChanged;
public event LabelContextChangedHandler LabelContextChanged;
3.通過委託綁定事件觸發函數
protected void Page_Load(object sender, EventArgs e)
{
TestWebUserControl1.LabelContextChanged += new LabelContextChangedHandler
(TestWebUserControl_LabelContextChanged);
}
}
4.觸發事件的函數
private void OnLabelContextChanged(object sender, LabelContextChangedEventArgs e)
{
if (LabelContextChanged != null)
{
LabelContextChanged(sender, e);
}
}
5.觸發事件函數的函數
public void ChangeLabelContext(object sender, string value)
{
Label1.Text = value;
OnLabelContextChanged(sender, new LabelContextChangedEventArgs(value));
}
6.行爲事件觸發5
protected void Button2_Click(object sender, EventArgs e)
{
TestWebUserControl1.ChangeLabelContext(sender, "hi");
TestWebUserControl2.ChangeLabelContext(sender, "cnblogs");
}
protected void Button2_Click(object sender, EventArgs e)
{
TestWebUserControl1.ChangeLabelContext(sender, "hi");
TestWebUserControl2.ChangeLabelContext(sender, "cnblogs");
}
文章附件爲cnblogs一博友的源碼。