zoukankan      html  css  js  c++  java
  • 简单的委托与事件实例

    委托可以这么来理解,委托就像是定义一个指针(C++),提供入口。

    1 实例1:执行一个委托定义的方法 
            第一步:定义一个委托
            public delegate void  Computer();  //委托用delegate定义,此方法是void类型,并且没有任何参数

            第二步:定义一个和委托类型相同的方法,计算两数之和
            private void MathOpt()
            {
                int a =1;
                int b = 2;
                int sum=a +b;
                Response.Write(sum.tostring());
          }

             第三步:在一个按钮的click事件中
             private void button1_Click(object sender, EventArgs e)
            {
                Computer com;//实例
                com = MathOpt;//类似指针,将方法的地址赋值委托类型的变量
                com();
            }

    好了,这样就执行了一个委托的方法,当系统执行到com()的时候,就相当于执行方法MathOpt(),如果有参数,那么在定义委托的时候和方法有相同的参数即可。

    有了委托就可以定义事件了

    实例2:定义一个事件
                 功能:在父子窗体间通信,如在子窗体输入条件,在父窗体中查询,类似Office的查找
                 定义窗体:假设父窗体为Frm1,子窗体为Frm2
                 第一步在Frm2中定义事件:
                public delegate void FullSearch(string key); //定义全文检索的委托事件
                public event FullSearch FullSearchOrder;  //用委托定义一个检索的事件(会在父窗体中执行功能)

               第二步在Frm2的“查询”按钮事件中执行:
              private void btnSearch_Click(object sender, System.EventArgs e)
              {
                    if(FullSearchOrder !=null)
                         FullSearchOrder(this.txtKey .Text );   //此时不用考虑如何查询,只传递一个查询关健字即可
               }

            第三步转到Frm1中处理事件
            3-1   在父窗体中的弹出子窗体时产生定义的那个事件方法:如
                    Frm2 frm2=new Frm2(key);  //key为要查询的关健字,与定义事件方法参数保持一至
                    frm2.FullSearchOrder +=new .Frm2.FullSearch(frm2_FullSearchOrder);  //执行这句会自动产生一个事件frm1_FullSearchOreder
                    frm2.ShowDialog ();

           3-2 在系统产生的事件中完成查询功能就OK了
           private void frm2_FullSearchOrder(string key)
           {
                   //这里完成查询的方法
           }

    到这里就好了,不同窗体间就可以通信了,在弹出的子窗体中就可以执行父窗体中的方法了,原理都是利用委托。

  • 相关阅读:
    PHP :cookie用法
    php数组变化
    js引入
    python中wx模块的具体使用方法
    python随机模块random的22种函数(小结)
    python 数据库查询返回list或tuple实例
    Python使用Excel将数据写入多个sheet
    使用Python实现将多表分批次从数据库导出到Excel
    Python基础学习笔记之数据类型
    python Django 反向访问器的外键冲突解决
  • 原文地址:https://www.cnblogs.com/linweimu/p/11147346.html
Copyright © 2011-2022 走看看