认识委托和事件

最近在自定义控件中做了个DropDownList的联动事件,具体的要求就是选择起始日期的年、月份和截止日期年、月份保持一样,避免起始日期大于截止日期。

--------------------------------分割线----------------------------------------

首先就要明白以下几个知识点:

委托

事件

AutoPostBack

AutoPostBack是通过让控件提交表单后让服务器回传控件信息的属性,将它设置为true的时候,显而易见的,在网页上点击该控件后,网页会有一个刷新的动作。如果把这个动作过程回传的控件信息用作联动,再好不过。所以我需要给自定义控件的两个子DropDownList控件设置该属性。

委托是一个类,它定义了方法的类型,使得可以将方法当作另一个方法的参数来进行传递,这种将方法动态地赋给参数的做法,可以避免在程序中大量使用If-Else(Switch)语句,同时使得程序具有更好的可扩展性。

那么委托是个什么样子呢?

namespace ConsoleApplication1
{class Class1{delegate void myde(int a, int b);static void Main(string[] args){Class1 cd = new Class1();myde mydel=cd.add;mydel(cd.getInt1(1),cd.getInt2(2));}public int getInt1(int a){return a;}public int getInt2(int b){return b;}public void add(int a, int b){Console.WriteLine(a-b);Console.ReadKey();}}}

输出 -1;跟add方法的操作一样。

 

当它和事件组合的时候又有另一种不同的用法:

先看个概述:

namespace ConsoleApplication1
{class Class1{   
public delegate void myEventDe(object sender, EventArgs e);public event myEventDe myEvent;static void Main(string[] args){Class1 cd = new Class1();cd.myEvent += new myEventDe(myUse);EventArgs e=new EventArgs();cd.myEvent(cd,e);}static void myUse(object sender, EventArgs e){Console.WriteLine("触发了事件");Console.ReadKey();}}}

 这就是事件的概况。

       

public delegate void OnSelectChangedHandle(object sender,DateEventArgs e);
public event OnSelectChangedHandle DateSelectChanged;

而事件中的两个参数:sender和e不是一成不变的,他们可以随意定义。同时可以将两个事件的不同结果同时加到一个事件中去。所以我给自定义的DateEvenArgs类设为两个参数,分别记录年和月。

        protected void Years_SelectedIndexChanged(object sender, EventArgs e){if (DateSelectChanged != null)DateSelectChanged(this, new DateEventArgs(this.Years.SelectedValue,this.Months));}protected void Month_SelectedIndexChanged(object sender, EventArgs e){if (DateSelectChanged != null)DateSelectChanged(this, new DateEventArgs(this.Years.SelectedValue, this.Months));}public void ChangeDate(string year, string month){Month.SelectedValue = month;Years.SelectedValue = year;}

由于我重新定义了一个事件类叫做 DateEvenArgs,所以我还必须新建一个类:

public class DateEventArgs : EventArgs{private string dateYear;private string dateMonth;public string selectDateValue;public DateEventArgs(string i,string j){this.dateYear = i;this.dateMonth = j;this.selectDateValue = i + j;}public string SelectDateValue{get { return selectDateValue; }}}

终于,我在自定义控件中自定义的事件做好了。

然后剩下在应用控件的页面用委托注册出事件,在事件中做出业务逻辑需要的判断,自定义控件的自定义事件就这么做好了。

转载于:https://www.cnblogs.com/JhoneLee/archive/2013/03/01/2939146.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/421945.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

上海2014计算机职称考试理论题,2014年上海市高校计算机一级考试8套理论题含答案...

2014年上海市高校计算机一级考试8套真题的理论题含参考答案,供学生复习迎考,是最新的上海计算机一级理论题复习提纲。A.光纤接入 B.CableModem C.ADSL D.电话拨号18. 关于防火墙,下列描述正确的是________。A.防火墙主要是为了查杀内部网中的病毒B.防火墙可将未被授…

EclipsePHP Studio 2008快捷方式

1. ctrlL //跳转到指定的行,会弹出来一个输入框 2. ctrlshiftF //格式化代码 3. ctrlshift/ //增加块注释(/* */),在选中行的情况下 4. ctrlshift\ //删除块注释(/* */) 5. ctrlshiftX //更改为大写,在选中字符的情况下(ctrlaltU,作用一样)…

电除尘原理计算机机箱,高炉煤气布袋除尘器计算机监控系统

济钢3200m~3高炉矿槽除尘气力输送系统特点及投用实践3200m~3高炉喷煤系统技术特点 刘利兵;王自学;苗新海;王文娟;刘庆刚;沙钢1~#高炉料罐均压煤气替代氮气改造实践 周智民;潘永龙;李增伟;高永生;炼钢电炉余热发电实践 刘亚平;邹公平;攀钢25MVA钛渣电炉炉气处理系统存在…

PHP 通过设置P3P头来实现跨域访问COOKIE

我的是CentOS的系统(Linux 内核) 编辑HOST vi /etc/hosts 加入 127.0.0.1 www.a.com 127.0.0.1 www.b.com 首先&#xff1a;创建 a_setcookie.php 文件&#xff0c;内容如下&#xff1a; <?php //header(P3P: CP"CURa ADMa DEVa PSAo PSDo OUR BUS UNI…

硬盘计算机类比推理,判断推理类比推理:储存:光盘:硬盘 A:晾晒:绳索:衣架 B.吃...

判断推理类比推理&#xff1a;储存&#xff1a;光盘&#xff1a;硬盘A&#xff1a;晾晒&#xff1a;绳索&#xff1a;衣架B.吃文章来源&#xff1a; 编辑者&#xff1a;yangshengliang 时间&#xff1a;2019-02-26 11:01:141、储存&#xff1a;光盘&#xff1a;硬盘A&#xff1…

计算机考试打字对齐,2010年职称计算机考试:对齐方式

对齐是指单元格内容相对于单元格边框线的显示位置。除了使用Excel默认的对齐方式以外,用户还可以自己设置数据的对齐方式,以使工作表美观、整齐。(1)水平对齐操作步骤:1)选取欲设置对齐方式的单元格或单元格区域。2)选取"格式"菜单中的"单元格"命令,出现&q…

MySQL查询结果条数编号示例 mysql 查找结果中自动加序号列

SELECT row : row 1 as row, t.id FROM sgcorp_product t, (SELECT row : 0) r where t.id not in(select product_id from sgcorp_pic) http://database.51cto.com/art/201011/235142.htm http://blog.csdn.net/macwhirr123/article/details/7489484转载于:https://www.cnb…

噪音曲线图测试软件,利用示波器统计工具分析有噪声信号之测量统计和余晖图...

利用示波器统计工具分析有噪声信号之测量统计和余晖图2019-09-24数字示波提供了多种基于统计的工具&#xff0c;除了前文提到的平均和直方图之外&#xff0c;测量参数统计和余晖图&#xff0c;也是非常有用的工具&#xff0c;协助快速获取有用信息。对于示波器测量参数&#xf…

第十讲:Obj-C Blocks 应用

转&#xff1a;http://tigercat1977.blog.163.com/blog/static/2141561122012111295955891/ 第十讲&#xff1a;Obj-C Blocks 应用 2012-12-12 09:59:55| 分类&#xff1a; Objective-C | 标签&#xff1a;objective-c |字号大中小 订阅 主要内容Blocks 是什么Blocks 和…

计算机右键菜单太多,电脑点击右键太多选项怎么办

1. 鼠标右键新建里有太多选项,怎么删除没用的选项清除方法&#xff1a;1&#xff0c;以下代码粘贴进TXT文本文档&#xff1b;2&#xff0c;文档另存后&#xff0c;命名为“.cmd”后缀&#xff0c;保存到桌面&#xff1b;3&#xff0c;双击该文档&#xff0c;即可自动清理。清除…

javascript递归函数问题

最近在看《Professional Javascript For Web Developers 3rd Edition》&#xff0c;看到关于递归函数调用的问题&#xff0c;在此记录备忘&#xff1a; 先定义一个递归函数&#xff0c;求正整数N的阶乘&#xff1a; function factorial(num){if(num<1)return 1;return num*f…

计算机成绩表及格率怎么算,卫生资格人机对话如何考试如何评分?成绩如何核算?...

原标题&#xff1a;卫生资格人机对话如何考试如何评分&#xff1f;成绩如何核算&#xff1f;世事悠悠浑未了&#xff0c;年光冉冉今如许。今天距离考试只有30天啦&#xff01;大家都做好冲刺准备了吗&#xff1f;眼看离考试越来越近&#xff0c;今儿就跟大家说说人机考试的那些…