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

    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
  • 相关阅读:
    UltraEdit的配置
    字符编码笔记:ASCII,Unicode和UTF-8
    Hello World Hexo
    好久不见,味素
    记一次springboot+dubbo+zookeeper吐血的问题
    [深度学习]模型部署之优化
    [深度学习]pytorch部署之onnx
    count(*)、count(1)、count(column)
    like %和-的区别与使用
    SQL语言分类
  • 原文地址:https://www.cnblogs.com/silva/p/730153.html
Copyright © 2020-2023  润新知