页面上有N个不同的控件,每个控件都注册了事件。唯一能确定的就是那些控件都是 System.Web.UI.WebControls.WebControl。现在在我不知道那N个控件具体都分别注册了哪些事件的情况,如何可以将所有控件的所有事件全部清除。类似:foreach(object objWebCtrl in arrWebCtrls)
    ((WebControl)objWebCtrl).Events.Ckear();WebControl 是有一个存放着事件集的属性叫 Events,但其是受保护的只读属性。

解决方案 »

  1.   

    也就是说我想清除页面中所有 WebControl 控件的所有已登记了的事件(有N个不同的WebControl)。如:Button1.Click += System.EventHandler(Button1_Click);LinkButton1.Click += System.EventHandler(LinkButton1_Click);使用户点击 Button1 按钮后不会进入 Button1_Click、LinkButton1_Click 等事件回调的方法。
      

  2.   

    找到((WebControl)objWebCtrl)
    去除委托
    LinkButton1.Click -= System.EventHandler(LinkButton1_Click);
      

  3.   

    to hchxxzx(NET?摸到一点门槛):    您好。正如您所说的,我就是想依据用户的不同来实现某些按钮是否响应用户的操作。因为我觉得仅仅从页面上隐藏某个按钮还是不够安全。所以我想根本的解决问题就是就算未授权的用户能看到按钮,就算其点击下去也不会进入事件处理程序。但我不想每个页面中都加入这样的判断语句。所以也就不能确定具体是哪一个按钮,哪个一按钮的事件处理程序。只希望依据按钮的标记决定其是否能够进入事件处理程序。所以 bidisty(浪漫草) 说的方法也是不可行的。我可以知道是 LinkButton1 但我根本无法知道 LinkButton1.Click 注册了哪些事件处理程序。那些事件处理程序的方法名又是什么。
      

  4.   

    LinkButton1.Click -= 这个代码可以用,但是并不如bidisty(浪漫草) ()所说可以去除楼主所说的事件。 -=右边必须是准确的在Events中的事件对象,而不是随便创建个新事件对象就能用来删除Events里边的所有事件对象的。
      

  5.   

    Events内容不可读,这是现在的 .net framework 这么设计并且没有办法打破的。别人注册完了事件你去删除它们,楼主的想法确实不太好。不要总想着“全面”控制别的控件,要分清主次。事件都是用代码注册给控件的,你的代码当初应该去注册一个个事件。