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

时间:2010-12-15 12:19:20

标签: c# .net visual-studio properties propertygrid

我需要使用类别

对属性网格中的属性进行分组

2 个答案:

答案 0 :(得分:2)

使用CategoryAttribute装饰该属性,并指定要在其中显示该属性的类别的名称。如果该类别尚不存在,则会有一个新类别自动创建。

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

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

如果您希望自己的属性出现在现有类别(已经出现在“属性”窗口中的属性之一)中,则应指定该类别的名称。例如,如果我希望UserName属性出现在“数据”类别中,我只需将上面的代码更改为:

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

答案 1 :(得分:1)

  

“对不起的朋友刚看到你的回复,我需要在组中创建子组,如属性网格中出现的字体组,在该组中,名称,大小,单位等属性将出现”

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

[TypeConverter(typeof(ExpandableObjectConverter))]

告诉属性网格允许扩展属性以查看其中的属性。

有关PropertyGrid的更多信息,请访问: Getting the Most Out of the .NET Framework PropertyGrid Control