我理解的是
当页面刷新是会自动根据事件来执行相应的程序
比如
当点击一个按钮时 得到this.Button2.Click事件
this.Button2.Click += new System.EventHandler(this.Button2_Click);
private void Button2_Click(object sender, System.EventArgs e)
{

}
有其他事件时就会执行其他事件我怎么在不管是什么事件的时候都输出事件的名称呀?
我用this.Events.ToString()不成功 
结果不管是什么事件 都输出为System.ComponentModel.EventHandlerList
请问该怎么得到呢?

解决方案 »

  1.   

    遍历 Events ,为每一格事件句柄都挂上你的一个事件处理程序。这样,任何事件同时也会触发你的程序。在你的程序打印捕获的sender等值。
      

  2.   

    sender
    通过判断它的类型,得到它的ID,可以知道当前是点击了哪个控件而产生的事件
      

  3.   

    遗憾,Events中的列表是private的。看来只能从page开始,查找所有的control,然后利用reflection查找所有control的事件。
      

  4.   

    这就像是病毒一样,遍历所有需要跟踪的控件以及他的eventInfo,利用getRaiseMethod取得原始触发方法。同时在内存中动态创建一个程序集(Assembly),并且动态创建(Emit)一个方法,令其与获得的方法有同样的参数,内部首先调用自定义的方法即便记录日志,然后再调用原来的方法。