首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

C# 事件委托有关,该如何处理

2012-04-15 
C# 事件委托有关委托事件什么的,还是有点问题如下代码一直都会用,但是具体不知道什么原理C# codebtn.Click

C# 事件委托有关
委托事件什么的,还是有点问题
如下代码一直都会用,但是具体不知道什么原理

C# code
    btn.Click += new delegate{Close();};


还有,最近看了一篇帖子弄清楚,.net的委托事件的规范(以前搞不懂EventArgs,也没去问),想问一下怎么样查看C#里的比如Window类的源代码之类的。

[解决办法]
事件其实就是一个 多路广播委托(多播委托) 具体可参见MSDN。
想看源码用Reflector吧。
[解决办法]
委托其实可以看成一种数据类型,不过这个数据类型是你自己定义的,
这个数据类型比较特别:它规定了实现它的方法的结构原型,也就是你的事件的类型。
因此:可以说事件是一个特殊的委托类型。
但是事件:可以订阅多次。多次订阅则会调用相应的处理。(可以看看什么是事件轮循)
看代码:
C# code
C# codeusing System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;namespace WindowsApplication1{    public partial class Form1 : Form    {        public Form1()        {            InitializeComponent();            //订阅多次事件            this.Load += new EventHandler(Form1_Load); //加事件:+1            this.Load += new EventHandler(Form1_Load1);//加事件:+1            this.Load += new EventHandler(Form1_Load1);//加事件:+1            //当事件激发时,C#会轮循事件的订阅。也就是说:我们在往Load事件中加处理方法。            //参考类似代码:int n=0;n+=1;            //移除事件            this.Load -= new EventHandler(Form1_Load1);//-1,减事件。是不是类似我们的:int n=0;n+=1;        }        void Form1_Load(object sender, EventArgs e)        {            MessageBox.Show("Form1_Load");        }        void Form1_Load1(object sender, EventArgs e)        {            MessageBox.Show("Form1_Load1");        }    }} 

热点排行