前不久在工作中遇到一个问题,我写了一个 自定义控件,在里面引用了一个Com控件。每次打开设计界面时,报非预期错误,不是运行发生的异常所以也不能调试,一时不知道如何解决。后来闲下来之后,我自己想了一下,可能打开设计界面也要执行Load时间吧,所以我就先把Load事件里面的代码注释掉了,没想到被我蒙到了,没有再发生异常。我分析了一下Load里面的代码,发生一面调用了Com控件的初始化方法,我把Com控件放到了Load时间之后,也没有再发生异常。
总结:可能Com控件初始化处理用到了一些资源,必须在父控件初始化完成以后才行。所以做好把Com控件的初始化封装成一个公有方法,或者放到shown事件里面。