如何控制类,提供前景色,背景色和字体的默认值?
-
23-09-2019 - |
题
我知道组件的模型表示的属性是否具有默认值或没有,通过的PropertyDescriptor 强>的的 ShouldSerializeValue方法的手段。
在碱视窗表单Control
类,具有例如前景色,背景色和字体一些性质下,其缺省为母体的相同的值,但我无法找到提供这些任何TypeDescriptor
或PropertyDescriptor
默认值。的 Control类不实现ICustomTypeDescriptor也不具有TypeDescriptionProviderAttribute。强>
如何Control类表明,这些特性应序列或不? 它在哪里提供对这些特性??
的的PropertyDescriptor感谢!!!
解决方案
他们没有默认值。这些属性是“环境”属性。控制类检测到已发生了他们财产的分配。如果从来没有发生过,它使用从父相应的属性。这是很好的,它确保子控件使用相同的颜色和字体作为它们的容器。
有是在控制类ShouldSerializeForeColor()方法。它是内在的,不能由用户代码覆盖。同其他属性。与反射器或.NET参考源的查找见
在 MSDN库文档他们是这样的:
Windows表单控件使用环境 性能因此其子控件 看起来像他们周围的 环境。环境属性是 控制财产,如果没有设置, 从父控制检索。如果 控制没有一个家长, 而属性没有设置, 控制的尝试来确定 环境属性的值通过 Site属性。如果控制 不选址,如果网站不 支持环境属性,或者如果 属性未设置上 AmbientProperties,控制用途 自己的默认值。通常情况下, 环境特性表示 特性的控制,例如 背景色,即传送给 子控件。例如,一个按钮 将具有相同的背景色为 默认情况下,父窗体。周围 通过控制提供的属性 类包括:光标,字体, 背景色,前景色,并从右至左。