Как сгенерить DropDownList.SelectedIndexChanged эвент ?

ASP.NET_Question
Дата: 02.04.2010 15:28:41
У меня на странице есть DropDownList

в коде есть
ddl.SelectedIndex = 0 
'Вот именно на этой строчке, когда программно меняется выбранный элемент
'мне необходимо чтобы вызывался эвент

ddl_SelectedIndexChanged(event, e) Handles ddl.SelectedIndexChanged)

Просто указать следующей строчкой вызов функции я не могу,
поскольку специфика контекста заключается в том что нужно вызвать
все функции навешенные на эвент используя только обьект контрола.
prustr
Дата: 02.04.2010 20:20:55
Эту задачу еще так можно интерпретировать: можно ли получить массив делегатов, привязанных в данный момент к экземпляру event. B если это не делегаты, то массив ссылок на обработчики...
интересно знать...
prustr
Дата: 02.04.2010 21:41:26
если нужно выполнить только пользовательские обработчики, то единственный выыход, который я пока вижу это объявить экземпляр event и параллельно вешать ( и снимать) на него все обработчики. ну и вызов через него
prustr
Дата: 02.04.2010 22:51:09
Собственно вся проблема состояит в том, что делегат SelectedIndexChanged у DropDownList объвлен как protected. и вызвать его извне нельзя. Но можно вызвать из унаследованного класса. Объявите класс (я на шарпе пишу)
class MyDropDownList:DropDownList
{
public static void OnSelectedIndexChanged(EventArgs e)
{
if (SelectedIndexChanged!=null) 
SelectedIndexChanged(this, e);
}
}

//Затем в коде надо написать чтото типа такого 
//...
(DropDownList)MyDropDownList = ddl;
MyDropDownList.OnSelectedIndexChanged(new EventArgs());
//...