Mic*_*ans 2 c# propertygrid class object winforms
我正在尝试创建一个可使用属性网格进行配置/编辑的对象。除了对象内的对象之外,一切都很顺利。
我有一个名为“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; }
}
Run Code Online (Sandbox Code Playgroud)
这样我就可以在属性网格中显示对象内部对象的属性/变量。
无论如何,当我现在编辑值并按 Enter 键或单击其他位置时,它不会保留我刚刚输入的值,而是会变回原来的值。
有人知道为什么会发生这种情况吗?或者也许是在属性网格中的对象中显示对象属性的更好主意?
要编辑对象内部的属性(例如,您可以在 winform 编辑器中看到具有字体或填充等属性的内容,...您可以在其中单击“加号”图标“展开”对象),您可以使用ExpandableObjectConverter类,如下所示:
[TypeConverter(typeof(ExpandableObjectConverter))]
public class Correspondence
{
...
}
Run Code Online (Sandbox Code Playgroud)
当然,并删除可浏览(假):
public Correspondence Correspondence
{
get;
set;
}
Run Code Online (Sandbox Code Playgroud)