1:
«Метод ListControl.OnSelectedIndexChanged также позволяет производным классам обрабатывать событие, не подключая делегат. Это предпочтительный метод для обработки события в производном классе. ”
A) Если я понимаю приведенную выше цитату, тогда, если мы извлекаем класс из ListControl, мы должны вместо подписки на событие SelectedIndexChanged рассматривать метод OnSelectedIndexChanged () как обработчик событий и таким образом помещать в него любую логику обработки событий:
protected override void OnSelectedIndexChanged(
EventArgs e
{
//event handling logic
}
Почему это было бы лучше, чем подписка на событие (внутри .aspx) через OnSelectedIndexChanged = ”name_of_event_handler”?
В)
В любом случае, в файле ascx мы используем атрибут OnSelectedIndexChanged, чтобы прикрепить обработчик события к событию. Имя этого атрибута совпадает с именем метода OnSelectedIndexChanged (). Это почему? Почему вместо этого нет имени этого атрибута SelectedIndexChanged:
<asp:ListControl SelectedIndexChanged = ”name_of_event_handler”
В конце концов, атрибут относится к событию, а не к методу (OnSelectedIndexChanged ()), который вызывает это событие!
* 1023 спасибо *
EDIT:
Здравствуйте,
ОДНАКО, убедитесь, что вы вызываете base.On [EventName] или событие не сработает!
Предполагая, что вы не хотите, чтобы кто-то еще мог отвечать на это событие, тогда было бы нормально не вызывать base.On [EventName], так как я думаю, что не вызывая его, на самом деле не будет никакого вреда кроме того, чтобы не запускать событие (и, следовательно, обработчики событий не будут вызываться)?
Я понимаю, что некоторые события должны быть запущены для того, чтобы Framework выполнил свою работу, но как насчет не вызывать base.On [SelectedIndexChanged]?