PropertyGrid中的自定义属性名称?

21
我有一个在PropertyGrid中使用的类。我发现为每个属性设置CategoryAttribute会创建一个新的类别,这显然不是我想要实现的行为。它会使我的属性网格为每个项目都带有一个自定义名称的[+]并且这不是我想要实现的行为。
在Visual Studio中,如果单击解决方案资源管理器中的项(例如程序集),它将没有树节点,只有一个完美命名的属性列表,即任何字符串都可以标识属性,而不仅仅是对象的名称。所以,我需要以下这种效果:
[+ 文件] 文件路径 | 值 文件大小 | 0 KB
或者甚至没有初始的[+]节点。 我浏览了System.ComponentModel命名空间以寻找适用的属性,但未找到。如何实现这种效果?它一定是可能的,Visual Studio可以做到,并且我相信它们是相同的组件,而不是派生和扩展的组件。
2个回答

44
使用DisplayNameAttribute更改文本的显示(使其更易读),使用DescriptionAttribute为属性添加帮助文本,使用CategoryAttribute对属性进行分组。
using System.ComponentModel;

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

3
您可以使用“Description”属性向用户提供更长的描述。 - JDunkerley
非常感谢 :) 救星。+1 - Eric Smith

9
你需要将CategoryAttribute属性设置为“文件”来覆盖这两个属性。请注意,对于这两个属性都需要进行设置。
[Category("File")]
public string FilePath { get; set;}

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

我建议阅读"充分利用.NET属性网格控件",以获取其他组织属性的想法,包括添加描述。


1
你漏掉了显示名称的部分(如果你想添加,可以参考我的回复中的示例)。 - Tom Anderson
1
是的,这解决了将它们放在一个树下的问题,但我需要来自所选答案的DisplayName属性。不过还是谢谢!:D - Eric Smith

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接