Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 属性网格中的斜体文本_C#_Propertygrid - Fatal编程技术网

C# 属性网格中的斜体文本

C# 属性网格中的斜体文本,c#,propertygrid,C#,Propertygrid,我使用PropertyGrid来显示通过ICustomTypeDescriptor实现公开的自定义属性 “我的对象”是在树结构中设置的,每个属性的值要么在每个对象中设置,要么从父对象继承。在PropertyGrid中,我希望直观地向用户显示在选定对象中设置的属性值,以及从父对象继承的属性值 现在我把每一处房产分为两类。一组显示实际对象中的值设置,如果未设置,则显示空白字段。另一组显示指定给对象的特性值,这些特性值要么在对象中设置,要么继承(如果未在对象中设置) 我想将这两个组合并为一个buy,以

我使用PropertyGrid来显示通过ICustomTypeDescriptor实现公开的自定义属性

“我的对象”是在树结构中设置的,每个属性的值要么在每个对象中设置,要么从父对象继承。在PropertyGrid中,我希望直观地向用户显示在选定对象中设置的属性值,以及从父对象继承的属性值

现在我把每一处房产分为两类。一组显示实际对象中的值设置,如果未设置,则显示空白字段。另一组显示指定给对象的特性值,这些特性值要么在对象中设置,要么继承(如果未在对象中设置)


我想将这两个组合并为一个buy,以常规文本显示集合属性,以斜体文本显示继承的值。但是,似乎没有任何方法可以通过ICustomTypeDescriptor.GetProperties()实现这一点。我无法轻松访问PropertyGrid的属性,因为它们是在程序运行时创建的。

你不能使用斜体,但可以使用粗体;粗体行为由
属性描述符
ShouldSerializeValue
决定;您可以通过各种
System.ComponentModel
技巧(
ICustomTypeDescriptor
TypeConverter
TypeDescriptionProvider
)包装
PropertyDescriptor
),并提供您自己的
PropertyDescriptor


或者,也有类似的网格,具有更多选项,例如-请参见该页上的“属性自定义”。

因此,如果PropertyDescriptor为ShouldSerialize()返回true,则属性将为粗体?这不是这个方法的真正意图,对吗?如果我已经在使用DataContractSerializer序列化这些对象,那么弄乱此方法是否也有可能改变序列化对象的方式?这取决于。。。XmlSerializer(但不是,AFAIL,DataContractSerializer)通过名称识别模式,但它不使用PropertyDescriptor。如果您使用运行时描述符(而不是公共的
bool ShouldSerialize*()
),那么您应该会很好。。。