В чем используются параметры "объект отправителя" и "EventArgs e"?

В случае Page_Load, Init и других событий страницы, каковы используются эти параметры (object sender, EventArgs e)?

Примеры были бы более полезными.

2 ответа

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;
 }
}

licensed under cc by-sa 3.0 with attribution.