委托事件什么的,还是有点问题
如下代码一直都会用,但是具体不知道什么原理
    btn.Click += new delegate{Close();};
还有,最近看了一篇帖子弄清楚,.net的委托事件的规范(以前搞不懂EventArgs,也没去问),想问一下怎么样查看C#里的比如Window类的源代码之类的。

解决方案 »

  1.   

    事件其实就是一个 多路广播委托(多播委托) 具体可参见MSDN。
    想看源码用Reflector吧。
      

  2.   

    委托其实可以看成一种数据类型,不过这个数据类型是你自己定义的,
    这个数据类型比较特别:它规定了实现它的方法的结构原型,也就是你的事件的类型。
    因此:可以说事件是一个特殊的委托类型。
    但是事件:可以订阅多次。多次订阅则会调用相应的处理。(可以看看什么是事件轮循)
    看代码:
    C# code
    using 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");
            }
        }
    }