Welcome 微信登录

首页 / 网页编程 / ASP.NET / 为自定义控件添加自定义事件

为自定义控件添加自定义事件2011-10-25 博客园 ShawnJiNet事件,委托,总是看起来有点绕,不过本文不介绍这些,只说说如何为自定义控件添加自定义事件。

本文所说的自定义控件,非继承其他现有Microsoft控件或者组合控件,而是完全继承UserControl的 东西。

既然不是继承自其他现有控件或者控件组合,在特定需求下,有添加自定义事件的可能性,或者对继 承自UserControl而得到的事件进行些许扩展,以期以简便的方式得到更丰富的信息等等。

下面简单介绍2个例子,有用之人作为参考,大拿级别的,ignore吧。

例1. 添加完全自定义事件。

需求:

假设客户端(指添加了自定义控件的窗体等等)想知道用户是否在控件上按下的Shift键(当然,可以 通过KeyPress之类的事件来判断,没必要再自己整个事件,例子只是个例子),控件作者想通过一个特殊 的方式来进行判断,这就可以选择自定义事件。

好吧,起个名字,叫Custom,需要客户端在触发Custom时得到一个布尔属性Flag来判断用户是否按下 Shift。

按部就班:

(1)创建事件

        // 创建事件        public event CustomEventHandler Custom;
有问题,CustomEventHandler是什么,当然,这里需要一个委托,于是还是搞定这个委托

(2)定义委托

    // 定义委托    public delegate void CustomEventHandler(object sender, CustomEventArgs e);
CustomEventHandler搞定了,又有新问题:CustomEventArgs是啥,其实需要CustomEventArgs来获得 你需要的数据,CustomEventHandler,于是还要定义个CustomEventArgs(这个东西必须继承自 System.EventArgs),在CustomEventArgs里面定义需要的数据属性:Flag

(3)定义EventArgs

    // 自定义EventArgs,并添加自定义属性【Flag】    public sealed class CustomEventArgs : EventArgs    {        private bool testFlag;        public CustomEventArgs(bool testFlag)        {            this.testFlag = testFlag;        }        public bool Flag        {            get { return testFlag; }        }    }