sharp .NET Events-Что такое отправитель объекта и EventArgs?




event action (4)

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

Сценарий:

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


Answer #1

Отправитель - это контроль, за которым действует действие (скажем, 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!";
    }
}

Answer #2

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

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

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

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


Answer #3
  1. 'sender' называется объектом, который имеет какое-то действие для некоторого контроля

  2. «событие», имеющее некоторую информацию о контроле, которая имеет некоторое поведение и идентификацию, выполняемые каким-то пользователем. Когда действие будет генерироваться, если событие добавит его в массив, называется event agrs


Answer #4

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

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

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





event-handling