我知道组件的模型表示的属性是否具有默认值或没有,通过的PropertyDescriptor 的的 ShouldSerializeValue方法的手段。

在碱视窗表单Control类,具有例如前景色,背景色和字体一些性质下,其缺省为母体的相同的值,但我无法找到提供这些任何TypeDescriptorPropertyDescriptor默认值。的 Control类不实现ICustomTypeDescriptor也不具有TypeDescriptionProviderAttribute。

如何Control类表明,这些特性应序列或不? 它在哪里提供对这些特性??

的的PropertyDescriptor

感谢!!!

有帮助吗?

解决方案

他们没有默认值。这些属性是“环境”属性。控制类检测到已发生了他们财产的分配。如果从来没有发生过,它使用从父相应的属性。这是很好的,它确保子控件使用相同的颜色和字体作为它们的容器。

有是在控制类ShouldSerializeForeColor()方法。它是内在的,不能由用户代码覆盖。同其他属性。与反射器或.NET参考源的查找见

MSDN库文档他们是这样的:

  

Windows表单控件使用环境   性能因此其子控件   看起来像他们周围的   环境。环境属性是   控制财产,如果没有设置,   从父控制检索。如果   控制没有一个家长,   而属性没有设置,   控制的尝试来确定   环境属性的值通过   Site属性。如果控制   不选址,如果网站不   支持环境属性,或者如果   属性未设置上   AmbientProperties,控制用途   自己的默认值。通常情况下,   环境特性表示   特性的控制,例如   背景色,即传送给   子控件。例如,一个按钮   将具有相同的背景色为   默认情况下,父窗体。周围   通过控制提供的属性   类包括:光标,字体,   背景色,前景色,并从右至左。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top