黑马程序员_事件

------- Windows Phone 7手机开发、.Net培训、期待与您交流! -------

事件是类在发生其关注的事情时用来提供通知的一种方式。很常见的一种是界面某个控件被点击了则触发了单击事件,然后通知程序执行某一操作。控件类不关心单击后发生什么事情,而仅仅是通知相关单位单击事件已经发生了,你们要干嘛就干嘛。然后在相关单位自己确定要如何响应这个单击事件。

事件的创建和使用

1.为事件创建一个委托类型

所有事件都是通过委托来激活的,其返回值类型一般为void

delegate void 委托类型名([触发事件的对象名,事件参数]);

public delegate void mydelegate(string action);//声明一个事件委托类型

2.创建事件处理的方法

此方法可用放在任何地方。

//把这个方法传送给委托,用来响应事件

public static void dododo(string action)

{

Console.WriteLine("我知道你{0}我了,我就是不响,你吹我",action);

}

3.声明事件

事件是类成员,不允许在命名空间中声明,以关键字event声明。

[修饰符] event 委托类型名 事件名;

public event mydelegate xiang;//定义一个xiang(响)的事件

以下luogu类包含事件的声明和触发该事件的方式(可以用属性,方法等)

//定义一个luogu(锣鼓)触发事件类

    public class luogu

    {

        public event mydelegate xiang;//定义一个xiang(响)的事件

        private string action;

        public string Action

        {

            get { return action; }

            set 

            { 

                action = value;

                xiang(action);//触发该事件

            }

        }           

}

4.通过委托对象来调用被包含的方法(订阅事件)

事件类对象名.事件名 += new 委托类型名(事件处理方法);

lg.xiang += new mydelegate(Program.dododo);//订阅事件

完整的例子:

namespace 事件

{

    public delegate void mydelegate(string action);//声明一个事件委托类型

    //定义一个luogu(锣鼓)触发事件类

    public class luogu

    {

        public event mydelegate xiang;//定义一个xiang(响)的事件

        private string action;

        public string Action

        {

            get { return action; }

            set 

            { 

                action = value;

                xiang(action);//如果有人敲这个锣鼓,则触发了响这个动作

            }

        }           

    }

    class Program

    {

        //把这个方法传送给委托,用来响应事件

        public static void dododo(string action)

        {

            Console.WriteLine("我知道你{0}我了,我就是不响,你吹我",action);

        }

        static void Main(string[] args)

        {

            luogu lg = new luogu();

            lg.xiang += new mydelegate(Program.dododo);//订阅事件

            Console.Write("对锣鼓做动作:");

            lg.Action = Console.ReadLine(); 

            Console.ReadKey();

        }

    }

}


你可能感兴趣的:(.net,C#,事件,黑马程序员)