现在的位置: 首页 > 综合 > 正文

.Net 2.0 事件机制,更简化了…

2011年01月16日 ⁄ 综合 ⁄ 共 1262字 ⁄ 字号 评论关闭

 

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;
    }
}

2. 定义事件

public event RetrieveTargetsHandler RetrieveTargets;

3. 点控件按钮时,

protected void btnSearchByConditions_Click(object sender, EventArgs e)
    {
        DataTable dt 
= new DataTable();
        
//
        RetrieveTargets(thisnew 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!");
    }

而在.Net1.1时,

如果想要您的类引发一个名为 EventName 的事件,您需要以下元素。

  • 持有事件数据的类,名为 EventNameEventArgs。该类必须从 System.EventArgs 导出。
  • 事件的委托,名为 EventNameEventHandler。
  • 引发事件的类。该类必须提供:
    1. 事件声明。

      [C#]
              public event EventNameEventHandler EventName;
              [Visual Basic]
              Public Event EventName As EventNameEventHandler
    2. 引发事件的方法,名为 OnEventName

抱歉!评论已关闭.