如何将自定义控件的属性设置为泛型类型?

时间:2009-01-28 12:01:04

标签: asp.net generics controls web-controls

我创建了一个自定义ASP.NET控件(派生自WebControls.TextBox)。

我想为该控件添加一个属性类型的属性。

这个属性实际上总是某种类型的枚举。 因此,当在设计器中我查看该控件的属性窗口时 - 我希望能够通过特定枚举中的选择为该属性赋值。 所以我希望在那里看到枚举的列表,我将其传递为..

示例(不是将编译的实际代码..只是为了表明我的意思):

我有2个枚举:

enum MyEnumABC
{
    A,B,C
}

enum MyColor
{
    Red,Blue,Green
}

我有这个控制权:

 public class MyTextBox<T> : TextBox
{
    public T Classification
    {
        get { }
        set { }
    }
}

现在我创建一个具有以下控件的网页:

<Alex:MyTextBox runat=server id="alex" Classification=MyEnumABC.A></Alex:MyTextBox>
<Alex:MyTextBox runat=server id="alex2" Classification=MyColor.Red></Alex:MyTextBox>

问题是我在哪里可以将类型实际传递给该控件的构造函数? (因为页面类是调用控件的构造函数的人。) 我实际上需要将alex1的类型设置为MyEnumABC,以及类型为MyColor的alex2类型。

第二个问题是我如何让VS2008在HTML设计器中支持这一点(这样当我在标签中键入Classification时 - 它将打开用于选择值的写入枚举)和属性页面控制。

我希望你明白我的意思。

谢谢。

1 个答案:

答案 0 :(得分:0)

设计师将支持枚举属性,而无需您执行任何特殊操作。只需在控件代码中指定属性,为其提供所有常用属性,以允许它在属性窗口中显示,属性窗口将自动在下拉列表中显示枚举值。