如何在属性网格中添加一个组,而不使用类别?

4
我需要在属性网格中对属性进行分组,但不使用类别。
2个回答

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 }
}

谢谢您的回复,但是在上面提供的解决方案中添加了类别,我需要对属性进行分组。 - subbiah
1
@subbiah:我不知道你在问什么。你能提供更好的描述吗? - Cody Gray
抱歉朋友,刚才才看到你的回复。我需要在组内创建子组,就像属性网格中的字体组一样,在该组内包含名称、大小和单位等属性。 - subbiah

1
"抱歉朋友,刚刚看到你的回复,我需要在组内创建子组,就像属性网格中的字体组一样,在该组内将显示名称、大小和单位等属性。"
根据您在评论中所描述的内容,似乎是要创建子属性。对于简单类型(如浮点数),如果将其公开为属性,则 PropertyGrid 已经知道如何显示和编辑它们。用户定义的类具有默认实现,允许不进行编辑并显示类名。如果您想在类内部显示属性,则需要在类定义之前添加以下内容:
[TypeConverter(typeof(ExpandableObjectConverter))]

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

有关PropertyGrid的更多信息可以在此处找到: 充分利用.NET Framework PropertyGrid控件


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