События .NET - Что такое отправитель объекта и EventArgs e? - PullRequest
76 голосов
/ 20 августа 2009

Что означают / ссылаются на sender и eventArgs? Как я могу использовать их (для сценария ниже)?

Сценарий:

Я пытаюсь создать пользовательский элемент управления с функцией удаления, и я хочу иметь возможность удалить элемент управления, по которому щелкнули на странице, содержащей множество таких же пользовательских элементов управления.

Ответы [ 5 ]

84 голосов
/ 20 августа 2009

Отправитель - это элемент управления, для которого предназначено действие (скажем, OnClick, это кнопка).

EventArgs - это аргументы, которые разработчик этого события может найти полезными. С OnClick он не содержит ничего хорошего, но в некоторых случаях, например, в GridView SelectedIndexChanged, он будет содержать новый индекс или некоторые другие полезные данные.

Крис говорит, что вы можете сделать это:

protected void someButton_Click (object sender, EventArgs ea)
{
    Button someButton = sender as Button;
    if(someButton != null)
    {
        someButton.Text = "I was clicked!";
    }
}
21 голосов
/ 20 августа 2009

sender относится к объекту, который вызвал событие, вызвавшее обработчик события. Это полезно, если у вас много объектов, использующих один и тот же обработчик событий.

EventArgs это что-то вроде фиктивного базового класса. Само по себе это более или менее бесполезно, но если вы извлекаете из него данные, вы можете добавить любые данные, которые вам нужно передать, в обработчики событий.

Когда вы реализуете свои собственные события, используйте EventHandler или EventHandler<T> в качестве их типа. Это гарантирует, что у вас будут именно эти два параметра для всех ваших событий (что хорошо).

8 голосов
/ 20 августа 2009

Вручную приведите отправителя к типу пользовательского элемента управления, а затем используйте его для удаления или отключения и т. Д. Например, что-то вроде этого:

private void myCustomControl_Click(object sender, EventArgs e)
{
  ((MyCustomControl)sender).DoWhatever();
}

«Отправитель» - это просто объект, который был активирован (например, нажат).

Аргументы события делятся на подклассы для более сложных элементов управления, например, древовидной структуры, чтобы вы могли узнать больше информации о событии, например, точно, где они щелкнули.

5 голосов
/ 20 июня 2010
  1. «отправитель» называется объектом, который выполняет некоторые действия над некоторыми контроль

  2. «событие», имеющее некоторую информацию о контроле, которое имеет некоторое поведение и личность пользователем user.when генерировать происходя для добавления события это укладывается в массив называется событием АГРС

4 голосов
/ 20 августа 2009
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...