В случае Page_Load
, Init
и других событий страницы, какая польза от этих (object sender, EventArgs e)
параметров?
Примеры были бы более полезными.
В случае Page_Load
, Init
и других событий страницы, какая польза от этих (object sender, EventArgs e)
параметров?
Примеры были бы более полезными.
EventArgs e
— это параметр с именем e, который содержит данные события. Дополнительную информацию см. на странице EventArgs MSDN.
Object Sender
— это параметр с именем Sender, который содержит ссылку на элемент управления/объект, вызвавший событие.
Класс Event 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!";
}
Изменить: при нажатии кнопки срабатывает обработчик события btn_Click. Часть «отправитель объекта» будет ссылкой на кнопку, которая была нажата.
sender
и btn
?
- person Eduardo Pignatelli; 02.03.2018
Эти два параметра (или варианты) отправляются по соглашению со всеми событиями.
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;
}
}