Вопрос:
В случае Page_Load, Init и других событий страницы, каковы используются эти параметры (object sender, EventArgs e)?
Примеры были бы более полезными.
Лучший ответ:
EventArgs e – это параметр, называемый e, который содержит данные события, для получения дополнительной информации см. страницу MSDN EventArgs.
Object Sender – это параметр Sender, который содержит ссылку на элемент управления/объект, который вызвал событие.
Событие Arg Класс: http://msdn.microsoft.com/en-us/library/system.eventargs.aspx
Пример:
protected void btn_Click (object sender, EventArgs e){ Button btn = sender as Button; btn.Text = «clicked!»; }
Edit:
Когда кнопка нажата, обработчик события btn_Click будет запущен. Часть “отправитель объекта” будет ссылкой на кнопку, на которую была нажата кнопка
Ответ №1
Эти два параметра (или варианты) отправляются, по соглашению, со всеми событиями.
- sender: объект, который поднял событие
- e экземпляр EventArgs, включающий во многих случаях объект, который наследует от EventArgs. Содержит дополнительную информацию о событии и иногда предоставляет возможность для обработки кода событием каким-либо образом изменить событие.
В случае упомянутых событий ни один из параметров не является особенно полезным. Только одна страница поднимает события, а EventArgs – Empty, поскольку дополнительной информации о событии нет.
Изучая два параметра отдельно, вот несколько примеров, где они полезны.
sender
Скажем, у вас несколько кнопок в форме. Эти кнопки могут содержать Tag, описывающие, что делать с ними. Вы можете обрабатывать все события Click одним и тем же обработчиком и в зависимости от sender делать что-то другое
private void HandleButtonClick(object sender, EventArgs e) { Button btn = (Button)sender; if(btn.Tag == «Hello») MessageBox.Show(«Hello») else if(btn.Tag == «Goodbye») Application.Exit(); // etc. }
Отказ от ответственности: это надуманный пример; не делай этого!
e
Некоторые события можно отменить. Они отправляют CancelEventArgs вместо EventArgs. Этот объект добавляет простое логическое свойство Cancel в аргументы события. Обработка кода этим событием может отменить событие:
private void HandleCancellableEvent(object sender, CancelEventArgs e) { if(/* some condition*/) { // Cancel this event e.Cancel = true; } } Ответ №2
Некоторые события можно отменить. Они отправляют CancelEventArgs вместо EventArgs. Этот объект добавляет простое логическое свойство Cancel на события args. Обработка кода этим событием может отменить событие: