【问题标题】:C# Enum List/Collection on User/Web Control design time support?C# Enum List/Collection on User/Web Control 设计时支持?
【发布时间】:2011-01-30 07:51:08
【问题描述】:

自星期四以来,我一直在为这个小问题撞墙,但我仍然没有比当时更接近答案。

我有一个具有如下属性的用户控件:

/// <summary>
/// Gets or sets the media types.
/// </summary>
/// <value>The media types.</value>
public List<MediaType> MediaTypesFilter { get; set; }

MediaType是一个枚举,包含None、PDF、Image等

我希望能够在设计时设置用户控件的媒体类型(使用智能感知),例如:

<CMS:MediaPicker ID="MediaPicker runat="server" MediaTypesFilter="PDF, Image">

或者更可能导致这样的结果:

<CMS:MediaPicker ID="MediaPicker" runat="server">
    <MediaTypesFilter>
        <MediaType>PDF</MediaType>
        <MediaType>Image</MediaType>
    </MediaTypesFilter>
</CMS:MediaPicker>

我想我需要在属性上使用属性,例如DesignerSerializationVisbility等,但我想不通。我读过关于 CollectionEditor 的内容,并且我读到的内容表明默认的 CollectionEditor 应该能够处理这个问题,所以我认为我不需要创建自定义 CollectionEditor。到目前为止,我最接近的是一个无法设置媒体类型的内部属性。我似乎找不到任何枚举列表示例作为在设计时使用的属性。有人可以指出我正确的方向或向我展示一些示例代码吗?

目前,我得到了一个逗号分隔的字符串,并且会在需要时以编程方式将其拆分为一个列表,但这意味着在设计时没有智能感知,这很糟糕。

【问题讨论】:

    标签: c# list controls properties enums


    【解决方案1】:

    尝试添加Browseable 属性。见example

    [Browseable(true)]
    

    别忘了加using System.ComponentModel;

    另外,请参阅Extending ASP.NET Web Controls With Custom HTML Attributes

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-04
      • 2018-03-25
      • 2011-07-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多