【问题标题】:Custom property names in PropertyGrid?PropertyGrid 中的自定义属性名称?
【发布时间】:2009-09-17 19:30:45
【问题描述】:

我有一个在PropertyGrid 中使用的类。我发现通过在每个属性上设置CategoryAttribute 显然会为每个项目创建一个新类别。这会将我的属性网格设置为每个项目都有一个 [+],其中包含我的自定义名称,这不是我想要实现的行为。

在 Visual Studio 中,如果您单击解决方案资源管理器中的一个项目,例如一个程序集,它有零个树节点和一个完全命名的属性列表,即任何字符串都可以识别一个属性,而不仅仅是对象的姓名。所以不要这样:

[+ 文件路径]
文件路径 |属性值
[+ 文件大小]
文件大小 | 0 KB

我正在寻找这个:

[+ 文件]
文件路径 |价值
文件大小 | 0 KB

甚至上面没有初始 [+] 节点。我翻遍了 System.ComponentModel 命名空间,寻找适用的属性,但找不到。

我怎样才能达到这个效果?这一定是可能的,Visual Studio 做到了,我相信它们是同一个组件,而不是派生和扩展的。

【问题讨论】:

    标签: c# winforms propertygrid


    【解决方案1】:

    使用DisplayNameAttribute 更改显示的文本(使其更易于阅读),使用DescriptionAttribute 向属性添加帮助文本,使用CategoryAttribute 对属性进行分组..

    using System.ComponentModel;
    
    [Category("Test")]
    [DisplayName("Test Property")]
    [Description("This is the description that shows up")]
    public string TestProperty {get;set;}
    

    【讨论】:

    • 您还可以使用 Description 属性为用户提供更长的描述
    • 非常感谢 :) 救生员。 +1
    【解决方案2】:

    您需要将两个属性的 CategoryAttribute 设置为“文件”:

    [Category("File")]
    public string FilePath { get; set;}
    
    [Category("File")]
    public int FileSize { get; set;}
    

    我建议阅读“Getting the most out of the .NET Property Grid Control”,了解可用于组织属性的其他想法,包括添加描述。

    【讨论】:

    • 您确实错过了有关显示名称的内容(如果您想添加它,请在我的回复中提供示例)
    • 是的,这解决了将它们放在一棵树下的问题,但我需要所选答案中的 DisplayName 属性。不过谢谢! :D
    猜你喜欢
    • 1970-01-01
    • 2017-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-12
    • 1970-01-01
    • 1970-01-01
    • 2011-04-27
    相关资源
    最近更新 更多