具有结构化/多级属性的.NET自定义用户控件

时间:2011-08-13 03:34:57

标签: .net vb.net user-controls properties custom-controls

我可以使用简单属性(Integer,String等)创建自定义UserControl,并在属性面板中显示这些属性。我还可以创建一个Custom UserControl,其属性如Size,Rectangle等,属性将显示为Property Panel中的可扩展项(单击'+',Size扩展为Width& Height)。

是否可以使用我自己的自定义结构创建属性?例如属性“消息”扩展为Text,ForeColor,BackColor,Blink等。我尝试创建一个属性,该属性引用一个简单的类或结构,其中包含表示我的自定义结构的属性,但在属性面板中属性显示为灰色且无法展开或修改。

1 个答案:

答案 0 :(得分:1)

您需要为自定义类型提供TypeConverter,以便可以将其转换为字符串,然后使用TypeConverterAttribute修饰自定义类型。

ExpandableObjectConverter

中获取您的TypeConverter
public class MyTypeConverter : ExpandableObjectConverter
{
}

覆盖CanConvertTo()ConvertTo()CanConvertFrom()ConvertFrom(),以便将自定义类型转换为字符串(这是属性中显示的值)您可以在展开之前看到的主行上的网格)以及从字符串返回到自身的网格。常见的字符串表示形式是显示以逗号分隔的所有字段值的列表。

使用TypeConverterAttribute装饰自定义类型。

[TypeConverter(typeof(MyTypeConverter ))]
public struct MyType
{
}

这是让你入门的最低要求。还有更多需要学习的东西。 This MDSN article可能是一个很好的起点。