C# 如何在不使用类别的情况下在属性网格中添加组?

C# 如何在不使用类别的情况下在属性网格中添加组?,c#,.net,visual-studio,properties,propertygrid,C#,.net,Visual Studio,Properties,Propertygrid,我需要使用类别将属性网格中的属性分组,而不使用类别装饰属性,并指定要在其中显示属性的类别的名称。如果该类别不存在,将自动创建一个新类别 例如,如果要在“属性”窗口中的自定义类别“用户”下显示属性UserName,则应在自定义控件中编写以下代码: [Category("Users")] public string UserName { get { return _userName } set { _userName = value } } 如果希望特性显示在现有类别(已显示在“特

我需要使用类别将属性网格中的属性分组,而不使用类别装饰属性,并指定要在其中显示属性的类别的名称。如果该类别不存在,将自动创建一个新类别

例如,如果要在“属性”窗口中的自定义类别“用户”下显示属性
UserName
,则应在自定义控件中编写以下代码:

[Category("Users")]
public string UserName
{
    get { return _userName }
    set { _userName = value }
}
如果希望特性显示在现有类别(已显示在“特性”窗口中的类别之一)中,则应指定该类别的名称。例如,如果我希望
UserName
属性出现在“数据”类别中,我只需将上述代码更改为:

[Category("Data")]
public string UserName
{
    get { return _userName }
    set { _userName = value }
}

“抱歉,朋友刚才看到了您的答复,我需要在组内创建子组,如属性网格中的字体组,在该组内将显示名称、大小、单位等属性”

您在评论中似乎描述的是子属性。对于像float这样的简单类型,如果将它们作为属性公开,PropertyGrid已经知道如何显示和编辑它们。用户定义的类有一个默认实现,不允许编辑并显示类名。如果要在类中显示属性,需要在类定义上方添加以下内容:

[TypeConverter(typeof(ExpandableObjectConverter))]
这会告诉属性网格允许展开属性以查看其中的属性

有关PropertyGrid的更多信息,请参见:

谢谢您的回复,但在上面添加的解决方案类别中,我需要对properties@subbiah当前位置我不知道你在问什么。你能提供更好的描述吗?抱歉,朋友刚才看到了你的回复,我需要在组内创建子组,如属性网格中的字体组,在该组内将显示名称、大小、单位等属性