【问题标题】:.NET Custom UserControl with Structured/Multi-level Properties具有结构化/多级属性的 .NET 自定义用户控件
【发布时间】:2011-10-26 06:40:33
【问题描述】:

我可以创建一个具有简单属性(整数、字符串等)的自定义用户控件,并将这些属性显示在属性面板中。我还可以创建具有大小、矩形等属性的自定义用户控件,这些属性将在属性面板中显示为可展开项(单击“+”,大小将展开为宽度和高度)。

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

【问题讨论】:

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


    【解决方案1】:

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

    ExpandableObjectConverter 派生您的 TypeConverter。

    public class MyTypeConverter : ExpandableObjectConverter
    {
    }
    

    重写 CanConvertTo()ConvertTo()CanConvertFrom()ConvertFrom() 以提供将自定义类型转换为字符串的能力(这是出现在主行属性网格中的值,您可以展开前见)并从字符串返回到自身。一个常见的字符串表示形式是显示一个由逗号分隔的所有字段值的列表。

    TypeConverterAttribute装饰自定义类型。

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

    这是您入门的最低要求。还有很多东西要学。 This MDSN article 可能是一个不错的起点。

    【讨论】:

    • 只是一个后续。我发现还需要为我的每个属性添加以下属性,以允许设计人员正确保存属性值。
    猜你喜欢
    • 1970-01-01
    • 2013-12-05
    • 1970-01-01
    • 2023-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-12
    • 1970-01-01
    相关资源
    最近更新 更多