我发现设计人员使用这些ISupportInitialize接口方法来支持优化,确保控件初始化的原子性,并防止在初始化过程中对控件进行任何操作。我的问题是:
发布于 2015-05-26 16:39:34
它与优化没有任何关系。当控件对属性分配的顺序敏感时,ISupportInitialize是您需要的接口。没有任何方法来影响设计师分配它们的顺序,它是按字母顺序进行的。
通常在BeginInit()方法中将bool变量设置为true,在属性设置器中测试这个变量,并且在设置它时什么都不做。然后,您的EndInit()方法使属性值有效。
在ErrorProvider组件中可以看到这方面的一个很好的例子。注意它是如何使用方法来延迟数据绑定的。PictureBox控制是另一个很好的例子,它使用它来推迟图像下载。TrackBar是另一个例子,它使用它来确保Value属性介于最小值和最大值之间。等等,.NET框架源代码通常是查看如何在实践中使用.NET类型的一个很好的地方。
发布于 2015-05-26 15:34:32
根据定义,设计器允许在可视模式下创建控件,然后由visual生成初始化控件的适当代码。
初始化是在一个地方进行的,以避免代码后面出现任何空引用问题。实际上,您希望在使用引用时已经创建了每个控件。
如果您想要根据特定的构造函数动态创建接口,那么完全可以创建控件初始化。
https://stackoverflow.com/questions/30462788
复制相似问题