Query_PrevMonth_Menu.Click += new EventHandler(Query_PrevMonth);    // 典型的
Query_ThisMonth_Menu.Click += Query_ThisMonth;                       // 这个工作也正常啊

解决方案 »

  1.   

    很简单。因为每种Delegate都是一个类型,你不new一个Delegate类型的具体对象实例,怎么用类型啊?!
      

  2.   

    至于说
       Query_ThisMonth_Menu.Click += Query_ThisMonth; 
    这是c#的“语法糖”。.net中并没有这种写法,而c#编译器会把它生成为第一种代码写法。
      

  3.   

    把事件当做一个类来理解,所以要new出一个新的实例来。万物皆为类。
      

  4.   

    sp1234
    回答的很清楚了第二种写法会被net自动转化成第一种net为了方便做出的一些处理机制,比如
    属性{get;set;}什么的
      

  5.   

    Query_PrevMonth_Menu.Click += delegate {……};
    Query_PrevMonth_Menu.Click += (s, e) => {……};
    也可以。
      

  6.   

    EventHandler 是一个类,是一种类型, Query_PrevMonth 本来就是这种类型的对象,还要 new 一个新的!蛋疼!还是第二种自然些。
      

  7.   

    C# 用new关键字声明实例,new过之后为实例分配运行空间,否则实例就不存在纯属个人理解