方法一:调用方:
        public delegate void _xinzen();
        public event _xinzen _xinzenshjian; 
       
        //新增按钮的事件
        private void button1_Click(object sender, EventArgs e)
        {
            _xinzenshjian();
        }
执行方:
        private void Form1_Load(object sender, EventArgs e)
        {
            control_console1._xinzenshjian += new Control_console.control_console._xinzen(xinzen);
        }        private void xinzen()
        {
            textBox4.Text = "shijianchufa";
        }
方法二:调用方:
        public delegate void _xinzen();
        public _xinzen _xinzenshjian; //与第一种比较仅仅去掉了event
       
        //新增按钮的事件
        private void button1_Click(object sender, EventArgs e)
        {
            _xinzenshjian();
        }
执行方:
        private void Form1_Load(object sender, EventArgs e)
        {
            control_console1._xinzenshjian += new Control_console.control_console._xinzen(xinzen);
        }        private void xinzen()
        {
            textBox4.Text = "shijianchufa";
        }
上面的两种方法,一个使用了evnet关键字,一个没有,这有什么区别?哪一种更好?

解决方案 »

  1.   

    使用event关键字后,在windows窗体设计器的控件属性窗口中,你将会在事件列表中发现这个事件,否则不会有显示
      

  2.   

    event的delegate要求参数列表固定为(Object,EventArgs或继承自此的类),单纯delegate的不必
      

  3.   

    event就是事件,在MSIL中添加了两个addXX removeXXX
      

  4.   

    Reference:
    下面是易懂的说明
    深入浅出话事件——上
    http://blog.csdn.net/fantasiax/archive/2006/06/19/812758.aspx深入浅出话事件——下
    http://blog.csdn.net/fantasiax/archive/2006/06/20/816074.aspx下面是比较晦涩的说明
    事件
    http://msdn2.microsoft.com/zh-cn/library/awbftdfh(VS.80).aspx
    事件设计
    http://msdn2.microsoft.com/zh-cn/library/ms229011(VS.80).aspx
    ==================
    hope this help
      

  5.   


    control_console1._xinzenshjian += new Control_console.control_console._xinzen(xinzen); 貌似楼主的这种使用方式不是事件,个人认为以上这种情况就是委托的多播委托实例化的一种方式
    只是表达形式与挂载事件的形式相似.而第一种情况才是标准的事件处理.
    如果我猜的不错,control_console1这个就是form本身是吧
      

  6.   

    control_console1是form中的一个自定义控件,这个自定义控件中有一个BUTTON点击后要触发form中的事件
    所以才想用委托
    和你说的一样,第一种使用了事件,第二种仅仅使用委托,只是不明白这两种方法的根本区别上面的回答都没能说中要害
    或者谁能告诉我这两种不同的方法哪一种性能更佳,为什么?