我已经为IExtenderProvider扩展程序创建了一个Controls.using (扩展程序),我正在迭代控件的集合并验证it.It works fine.but,有时在更改某些设计时,或者当设计人员刷新(同时从代码中删除一些事件)时,扩展程序提供的属性(在我的示例中是验证顺序和组)将从设计器中丢失,并且控件本身不会添加到扩展程序collection.so中,应用程序完成的验证会崩溃(当然,(应用程序本身).I在IExtenderProvider too.but中有ShouldSerialize和Reset方法,没有任何东西帮助me.Please指导我如何使所有控件在任何时候都对扩展程序可见。
谢谢你,玛蒂
发布于 2009-09-14 07:14:33
当扩展程序中有异常时,有时会发生这种情况。如果发生这种情况,则需要在设计时调试扩展程序。我今天不得不这样做好几次。看看调试设计-时间控制,它会让你开始的
其他情况下,这是因为您更改了扩展程序的属性和方法,并且“序列化”值不再合适。
发布于 2014-02-13 16:53:22
这篇由titled撰写的题为"使IExtenderProvider的代码生成与您的意愿一致“的文章可能有一个与您的问题相关的解决方案。它描述了为您的IExtenderProvider实现构建自定义序列化程序,这样做可以缓解这里提到的问题。
文章中的大部分相关信息也在堆栈溢出的另一个答案中被引用。
发布于 2018-02-15 08:16:15
下面的答案肯定是迟来的,但可能会对其他人有所帮助。
我也有同样的问题:财产要么丢失,要么根本没有出现。在我的例子中,问题在于,使用ProvideProperty、CanExtend以及SetXXX和GetXX方法指定的类型并不相同。例如,ProvideProperty和CanExtend将“Control”指定为类型,而SetXXX和GetXXX则将“object”指定为第一个参数。
因此,一旦我确定,对于--在ProvideProperty中指定的每个类型--我都有一个匹配的GetXXX和SetXXX,一切都如预期的那样正常工作。
也许这个有帮助。
注意:修复代码后,我必须重新启动Visual。
https://stackoverflow.com/questions/986350
复制相似问题