怎样去掉事件的绑定

batisituta 2006-06-16 10:45:40
已有一个控件的集合ControlCollectionA, 怎样去掉这个控件集合里面所有控件绑定的事件。
注:事件都是通过ControlA.EventA += new System.EventHandler(this.EventACode)绑定的;
请高手赐教!
...全文
558 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
qpl007 2006-06-17
  • 打赏
  • 举报
回复
ControlCollectionA,需要去掉它所有子控件的事件绑定,子控件ControlA, EventA,EventACode是不知道的,这个应该怎样处理呢?请给个思路
----------------
这个不大可能,除非你能获取事件的委托,然后将其置null。ControlA, EventA 都可以通过反射获取,但是 EventA 的委托就比较难了,要根据控件内部的实现而论。


ControlCollectionA是通过反射从另一个窗口B取的,它是窗口B的一个子控件,我的目的是通过反射将ControlCollectionA加载到窗口A,但是加载后想去掉ControlCollectionA及其子控件上绑定的事件,还有其他好办法吗?
-------------------------------
可以通过反射将 ControlCollectionA “克隆”一份。
snowday365 2006-06-17
  • 打赏
  • 举报
回复
呵呵,减一下就行了
batisituta 2006-06-17
  • 打赏
  • 举报
回复
To qpl007(蓝色闪电):可以通过反射将 ControlCollectionA “克隆”一份。

-------------------------------
是用什么方法拷贝?
Knight94 2006-06-16
  • 打赏
  • 举报
回复
ControlA.EventA -= new System.EventHandler(this.EventACode);
Knight94 2006-06-16
  • 打赏
  • 举报
回复
ControlA.EventA -= new System.EventHandler(this.EventACode);
qpl007 2006-06-16
  • 打赏
  • 举报
回复
ControlA.EventA -= new System.EventHandler(this.EventACode)
batisituta 2006-06-16
  • 打赏
  • 举报
回复
控件复制的时候应该也是会绑定事件的吧?
Knight94 2006-06-16
  • 打赏
  • 举报
回复
to ControlCollectionA是通过反射从另一个窗口B取的,它是窗口B的一个子控件,我的目的是通过反射将ControlCollectionA加载到窗口A,但是加载后想去掉ControlCollectionA及其子控件上绑定的事件,还有其他好办法吗?

是否可以考虑复制,然后绑定新的事件。
Knight94 2006-06-16
  • 打赏
  • 举报
回复
ControlA, EventA,EventACode这三项,前两项都可以通过反射获得,第三个则不行。

batisituta 2006-06-16
  • 打赏
  • 举报
回复
其实ControlA通过遍历ControlCollectionA是可以取到的,关键是EventA,EventACode
batisituta 2006-06-16
  • 打赏
  • 举报
回复
To Knight94(愚翁) :
ControlCollectionA是通过反射从另一个窗口B取的,它是窗口B的一个子控件,我的目的是通过反射将ControlCollectionA加载到窗口A,但是加载后想去掉ControlCollectionA及其子控件上绑定的事件,还有其他好办法吗?
Knight94 2006-06-16
  • 打赏
  • 举报
回复
to ControlCollectionA,需要去掉它所有子控件的事件绑定,子控件ControlA, EventA,EventACode是不知道的,这个应该怎样处理呢?请给个思路

如果这三样都不知道,就比较麻烦了,你直接取消这些事件是不太可能了,看看在父Control中重载PreProcessMessage事件中,然后判断消息,进行拦截。

如果子control是你写的,那么在control提供接口来清除事件是最简单的。
batisituta 2006-06-16
  • 打赏
  • 举报
回复
qpl007(蓝色闪电),Knight94(愚翁), 可能我说的不是很清楚,现在问题是我只知道父控件ControlCollectionA,需要去掉它所有子控件的事件绑定,子控件ControlA, EventA,EventACode是不知道的,这个应该怎样处理呢?请给个思路
xvting 2006-06-16
  • 打赏
  • 举报
回复
ControlA.EventA -= new System.EventHandler(this.EventACode);
GXY2005 2006-06-16
  • 打赏
  • 举报
回复
ControlA.EventA -= new System.EventHandler(this.EventACode);
ld_thinking 2006-06-16
  • 打赏
  • 举报
回复
qpl007(蓝色闪电) ( ) 信誉:100 2006-06-16 10:50:00
Knight94(愚翁) ( ) 信誉:110 2006-06-16 10:50:00

*_*
weiweiplay 2006-06-16
  • 打赏
  • 举报
回复
ControlA.EventA -= new System.EventHandler(this.EventACode)
woshi_zjf 2006-06-16
  • 打赏
  • 举报
回复
学习

110,571

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧