我正在尝试创建一个可使用属性网格进行配置/编辑的对象。 除了对象内的对象之外,一切都很顺利。
我有一个名为“ContactInformation”的对象/类。在该对象内,我有一个名为“Correspondence”的对象。
这就是该部分的外观:
[Browsable(false)]
public Correspondence Correspondence
{
get;
set;
}
public int CorrespondenceStatus
{
get { return this.Correspondence.Status; }
set { this.Correspondence.Status = CorrespondenceStatus; }
}
public string CorrespondenceComment
{
get { return this.Correspondence.Comment; }
set { this.Correspondence.Comment = CorrespondenceComment; }
}
public DateTime CorrespondenceDate
{
get { return this.Correspondence.LastSend; }
set { this.Correspondence.LastSend = CorrespondenceDate; }
}
这样我就可以在属性网格中显示对象内部对象的属性/变量。
无论如何,当我现在编辑值并按 Enter 键或单击其他位置时,它不会保留我刚刚输入的值,而是会变回原来的值。
有人知道为什么会发生这种情况吗?或者也许是在属性网格中的对象中显示对象属性的更好主意?
最佳答案
要编辑对象内的属性(例如,您可以在 winform 编辑器中看到具有字体或填充等属性的内容,...您可以在其中单击“加号”图标“展开”对象),您可以使用ExpandableObjectConverter类,像这样:
[TypeConverter(typeof(ExpandableObjectConverter))]
public class Correspondence
{
...
}
当然,并删除可浏览(false):
public Correspondence Correspondence
{
get;
set;
}
关于c# - 在 PropertyGrid 中的对象内部编辑对象的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6368646/