首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

类有有个事件,触发这个事件,如果引用这个类的代码里没有定义对应的事件处理函数,就报"未将对象引用设置到对象的实例"解决方法

2012-01-19 
类有有个事件,触发这个事件,如果引用这个类的代码里没有定义对应的事件处理函数,就报未将对象引用设置到

类有有个事件,触发这个事件,如果引用这个类的代码里没有定义对应的事件处理函数,就报"未将对象引用设置到对象的实例"
做了个了个用户控件MyControl,到光标位置发生变化是抛出一个自定义事件
public   delegate   void   FocusChangeEventHandler();
public   static   event   FocusChangeEventHandler   FocusChange;

在这个控件中抛出事件的代码是这么写的
FocusChange();

如果客户代码里注册了处理这个事件的函数:
MyControl.FocusChange   +=   new   MyControl.FocusChangeEventHandler(Class1_FocusChange);
就没问题.但如果没有上面这行,我的控件在抛出事件的那行就会产生异常“未将对象引用设置到对象的实例”。于是我不得不在我的控件里抛出事件的地方写成
try
{
      FocusChange();
}
catch(Exption   ex){}

可这看着很别扭那,而且.net没必要这么做啊。是我写的有问题还是.net就是这个样子的?
感激涕零!



[解决办法]
MyControl.FocusChange += new MyControl.FocusChangeEventHandler(Class1_FocusChange);
是必须的,因为上面这句相当于new了一个实例,
一般情况下你可以这样写
if( FocusChange != null )
FocusChange.invoke();

热点排行