Выставить событие OnSelectedIndexChanged в CompositeControl - PullRequest
4 голосов
/ 18 декабря 2008

Если у меня есть DropDownList элемент управления, который составляет часть CompositeControl, как я могу предоставить событие SelectedIndexChanged для потребляющей страницы aspx?

Спасибо

Ответы [ 2 ]

11 голосов
/ 18 декабря 2008

Существует гораздо более простой способ прямого прохода.

Попробуйте это:

    public event EventHandler SelectedIndexChanged
    {
        add { this.TargetControl.SelectedIndexChanged += value; }
        remove { this.TargetControl.SelectedIndexChanged -= value; }
    }

[Редактировать] Если, конечно, вам не нужно вводить пользовательскую логику.

4 голосов
/ 18 декабря 2008

Вот что вы делаете. Сначала объявите событие, подобное этому:

public event EventHandler SelectedIndexChanged;

Затем внутренне подключитесь к SelectedIndexChangedEvent DropDownList. В вашем обработчике событий сделайте что-то вроде этого:

        protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (this.SelectedIndexChanged != null)
            {
                this.SelectedIndexChanged(sender, e);
            }
        }

Все, что вы действительно делаете, это оборачиваете оригинальное событие и повторно его поднимаете.

РЕДАКТИРОВАТЬ: См. Ответ Брайана Рудольфа. На самом деле это очень простой способ сделать это.

...