В случае Page_Load
, Init
и других событий страницы, каковы используются эти параметры (object sender, EventArgs e)
?
Примеры были бы более полезными.
В случае 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 будет запущен. Часть "отправитель объекта" будет ссылкой на кнопку, на которую была нажата кнопка
Эти два параметра (или варианты) отправляются, по соглашению, со всеми событиями.
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;
}
}
Некоторые события можно отменить. Они отправляют CancelEventArgs вместо EventArgs. Этот объект добавляет простое логическое свойство Cancel на события args. Обработка кода этим событием может отменить событие: