c# - 在 PropertyGrid 中的对象内部编辑对象的属性

标签 c# winforms class object propertygrid

我正在尝试创建一个可使用属性网格进行配置/编辑的对象。 除了对象内的对象之外,一切都很顺利。

我有一个名为“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/

相关文章:

c++ - 从字符串转换时如何组合多个枚举?

java - 试图纠正一个程序,甚至无法让它运行

c# - 在数据列表中,如何添加一个从所选行获取其 Id 的按钮?

c# - 这种网络服务方法有什么问题?

c# - 在 c# 中信任存储在 "Trusted Root Certification Authorities"中的 SSL 证书

c# - 阻止 VS 将属性值放入 .Designer.cs 文件

c# - 创建一个类以在运行时实现接口(interface)(如代理类)

c# - 如何将非 bool 属性绑定(bind)到 bool 属性

c# - RichTextBox 项目符号缩进(.NET 窗体)

java - 来自非静态引用错误的非静态方法。简单程序