环境:VS2005 C#VS编译器就是玻璃做的,一不小心就要抛异常。编译成功,但打开Form1.cs[设计]时出异常了。说我用户控件中的一个属性"未将对象引用设置到对象的实例"。
该属性是用来返回或设置一个控件Text的,该控件是绝对存在的,不然也不会编译成功,但为什么突然就"未将对象引用设置到对象的实例"?

解决方案 »

  1.   

    观察一下设置的那个值是不是null另外,不想报这种错误,通常可以b把运行时的初始化赋值工作放在
    if(!DesignMode){} 块中,使得在设计时不会执行这段代码
      

  2.   

    我晕啊,我直接把出错相关的控件全注释掉了,包括Form1.designer.cs中出错的哪行代码(800行)。
    但震惊的是,编译器依然报错,并将错误指向了我已经注释掉的那行代码!!(清理并重新生成N次了)
      

  3.   

    哦也!问题解决,现将经验分享如下:其实编译器所指出的异常位置并不是异常的真正位置。前面说了编译能成功--那好,执行--遇到异常--调试--发现异常真正位置了!原来异常位置更早!(我操作了一个null对象)。但设计器并没有报这个异常,可能设计器和真正的调试模式还是有较大区别的。设计器把异常责任推给了无辜的后面代码,也迷惑了我的思维。我在真正异常位置加了个if(...)后,问题便解决了