Как сделать свойство настраиваемого элемента управления универсальным типом? - PullRequest
0 голосов
/ 28 января 2009

Я создал пользовательский элемент управления 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 и тип alex2 для типа MyColor.

И второй вопрос: как заставить VS2008 поддерживать это в конструкторе HTML (чтобы при вводе классификации в теге открывалось перечисление записи для выбора значения) и страница свойств контроль.

Надеюсь, вы понимаете, что я имею в виду.

Спасибо.

1 Ответ

0 голосов
/ 28 января 2009

Дизайнер будет поддерживать свойства enum без необходимости делать что-то особенное. Просто укажите свойство в коде вашего элемента управления, присвойте ему все обычные атрибуты, чтобы оно отображалось в окне свойств, и окно свойств автоматически отобразит значения перечисления в раскрывающемся списке.

...