.Net 2.0 事件机制,更简化了...
Case: aspx页面有一控件,希望点击控件上一按钮,进行一些运算,得到一DataTable,将该DataTable绑定到页面一数据控件上。
控件cs文件:
1. 定义代理
public delegate void RetrieveTargetsHandler(object sender, RetrieveEventArgs e);
public class RetrieveEventArgs : EventArgs
{
private DataTable resultTable;
public DataTable ResultTable
{
get { return resultTable; }
}
public RetrieveEventArgs(DataTable ret)
: base()
{
this.resultTable = ret;
}
}
public class RetrieveEventArgs : EventArgs
{
private DataTable resultTable;
public DataTable ResultTable
{
get { return resultTable; }
}
public RetrieveEventArgs(DataTable ret)
: base()
{
this.resultTable = ret;
}
}
2. 定义事件
public event RetrieveTargetsHandler RetrieveTargets;
3. 点控件按钮时,
protected void btnSearchByConditions_Click(object sender, EventArgs e)
{
DataTable dt = new DataTable();
//![](https://www.cnblogs.com/Images/dot.gif)
RetrieveTargets(this, new RetrieveEventArgs(dt));
}
{
DataTable dt = new DataTable();
//
![](https://www.cnblogs.com/Images/dot.gif)
RetrieveTargets(this, new RetrieveEventArgs(dt));
}
在aspx页面Page_Load中,实例化代理,并指定处理方法.
this.TargetSearchByConditions1.RetrieveTargets += new RetrieveTargetsHandler(TargetSearchByConditions1_RetrieveTargets);
void TargetSearchByConditions1_RetrieveTargets(object sender, RetrieveEventArgs e)
{
DataTable dt = e.ResultTable;
Response.Write("yes.Good!");
}
{
DataTable dt = e.ResultTable;
Response.Write("yes.Good!");
}
而在.Net1.1时,
如果想要您的类引发一个名为 EventName 的事件,您需要以下元素。
- 持有事件数据的类,名为 EventNameEventArgs。该类必须从 System.EventArgs 导出。
- 事件的委托,名为 EventNameEventHandler。
- 引发事件的类。该类必须提供:
- 事件声明。
[C#] public event EventNameEventHandler EventName; [Visual Basic] Public Event EventName As EventNameEventHandler
- 引发事件的方法,名为 OnEventName。
- 事件声明。