【发布时间】:2013-03-22 17:33:03
【问题描述】:
为什么SomeClass.ClassField.StructField 属性在propertyGrid 中没有变化?
看来,propertyGrid 在 SomeStruct 实例更改后不会调用 SomeClass.ClassField.set。但同样的代码适用于 Point 而不是 SomeStruct。
[TypeConverter(typeof(ExpandableObjectConverter))]
public struct SomeStruct
{
private int structField;
public int StructField
{
get
{
return structField;
}
set
{
structField = value;
}
}
public override string ToString()
{
return "StructField: " + StructField;
}
}
[TypeConverter(typeof(ExpandableObjectConverter))]
public sealed class SomeClass
{
public SomeStruct ClassField
{
get;
set;
}
}
...
var someClass = new SomeClass
{
ClassField = new SomeStruct
{
StructField = 42
}
};
propertyGrid.SelectedObject = someClass;
【问题讨论】:
-
结构应该是不可变的
-
这个是可变的。与点/矩形/等相同。
-
好点(多余的字符)
-
请注意“ExpandableObjectConverter”中的“Object”一词。您将编辑结构的盒装副本,它不会传播回来。以PointConverter的实现为例。
-
@Hans Passant,非常感谢,它有效。
标签: .net winforms propertygrid