首页 新闻 会员 周边 捐助

C# 委托绑定的问题,求帮助!

0
[待解决问题]

winform架构,两个不同的form里面的两个不同的方法同时绑定了一个公开的委托,可是因为绑定了两次,所以每次执行都会执行两次方法,很苦恼,有没有什么方式可以每次绑定的的时候可以将这个委托清空(就是当作一个没有绑定过的)重新进行赋值绑定呢?

有没有这种方式或者说有没有能实现这样子的方式,【-=方法】好像试验不可以

技术控甄的主页 技术控甄 | 菜鸟二级 | 园豆:236
提问于:2013-12-12 15:12
< >
分享
所有回答(4)
0
sam.c | 园豆:148 (初学一级) | 2013-12-12 15:16
0

将 委托对象名=null

幕三少 | 园豆:1384 (小虾三级) | 2013-12-12 15:35

就是将委托直接值为null

支持(0) 反对(0) 幕三少 | 园豆:1384 (小虾三级) | 2013-12-12 15:36
0

建议楼主自习看一下委托是怎么实现的,好久之前研究过,记得是两个方法都会存储在一个称为调用列表的结构中,按照类似于队列的顺序被连续调用。所以会调用两次。记得有remove方法或者啥的,能移除一个委托。可以参考一下<visual studio 2008核心编程>静下心来,仔细看一下。收获蛮大的。祝你好运

LiloT | 园豆:6 (初学一级) | 2013-12-12 16:25

而且最重要的一点,委托在编译后是一个类!!!

支持(0) 反对(0) LiloT | 园豆:6 (初学一级) | 2013-12-12 16:37
0

参考:

 1         public delegate void OperatorChangeEventHandler();        
 2         
 3         
 4         private event OperatorChangeEventHandler mOperatorMgrChangeEvent;
 5         public event OperatorChangeEventHandler OperatorMgrChangeEvent
 6         {
 7             add
 8             {
 9                 if (mOperatorMgrChangeEvent != null)
10                 {
11                     Delegate[] Delegates = mOperatorMgrChangeEvent.GetInvocationList();
12                     for (int i = 0; i < Delegates.Length; i++)
13                     {
14                         mOperatorMgrChangeEvent = Delegate.Remove(mOperatorMgrChangeEvent, Delegates[i]) as OperatorChangeEventHandler;
15                     }
16                     mOperatorMgrChangeEvent = Delegate.Combine(mOperatorMgrChangeEvent, value) as OperatorChangeEventHandler;
17                 }
18                 else
19                 {
20                     mOperatorMgrChangeEvent += value;
21                 }
22             }
23             remove
24             {
25                 if (mOperatorMgrChangeEvent == null)
26                     return;
27                 else
28                     mOperatorMgrChangeEvent -= value;
29             }
30         }
View Code
水晶途途 | 园豆:1443 (小虾三级) | 2013-12-12 17:11
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册