日期:2014-05-18  浏览次数:20771 次

关于委托的问题
一般使用委托都是在打开窗体之前如:
Form f = new Form();  
f.aa += new bb(cc);  
f.Show();  
现在的情况是:

在窗体B中包含子窗体A,我在窗体A中右键菜单打开一个窗体C,在窗体C中经过参数设置,确定后要求在窗体A和B中各添加一个
控件,我在窗体A的打开窗体C时使用了委托f.aa += new bb(cc); ,这段代码可完成在窗体A中添加一个控件的功能,但是主窗体B中的委托何时添加呢,我在B窗体初始化的时候声明实例化窗体C,添加委托,提示未将对象引用设置到对象的实例

------解决方案--------------------
委托传递的是方法名,或者说是方法的地址,也就是你这里面的cc,在A初始化C的时候,这个cc就应该是A中的某个方法,让C在某个时间执行这个委托的时候调用它。而你的C是由A初始化的,并非通过B,那么B不可能知道A什么时候会去初始化一个C出来,自然针对B的委托,就应该由A来负责提供,只要传递B中的方法即可,而B中需要传递的方法必须声明为public,且A要能够获取B的实例。