Подтвердить что ты не робот

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

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

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

4b9b3361

Ответ 1

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 будет запущен. Часть "отправитель объекта" будет ссылкой на кнопку, на которую была нажата кнопка

Ответ 2

Эти два параметра (или варианты) отправляются, по соглашению, со всеми событиями.

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

Ответ 3

Некоторые события можно отменить. Они отправляют CancelEventArgs вместо EventArgs. Этот объект добавляет простое логическое свойство Cancel на события args. Обработка кода этим событием может отменить событие: