.NET事件 - 什么是对象发送者& EventArgs e?

时间:2009-08-19 23:20:35

标签: .net events event-handling

sender和eventArgs是什么意思/指的是什么?我该如何使用它们(对于下面的场景)?

情景:

我正在尝试使用删除功能构建自定义控件,我希望能够删除在包含许多相同自定义控件的页面上单击的控件。

5 个答案:

答案 0 :(得分:84)

发件人是该操作所针对的控件(例如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!";
    }
}

答案 1 :(得分:21)

sender指的是调用触发事件处理程序的事件的对象。如果有许多对象使用相同的事件处理程序,这将非常有用。

EventArgs是一个虚拟基类。它本身或多或少是无用的,但是如果你从它派生,你可以添加你需要传递给事件处理程序的任何数据。

当您实施自己的活动时,请使用EventHandlerEventHandler<T>作为其类型。这可以保证您为所有事件准确地拥有这两个参数(这是一件好事)。

答案 2 :(得分:8)

手动将发件人转换为自定义控件的类型,然后使用它来删除或禁用等等。例如,像这样:

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

'发件人'只是被操作的对象(例如点击)。

事件args是更复杂控件的子类,例如树视图,因此您可以了解有关事件的更多详细信息,例如他们点击的确切位置。

答案 3 :(得分:5)

  1. 'sender'被称为对象,对某些对象执行某些操作 控制

  2. 'event'它有一些关于控件的信息     一些行为和身份表现     一些用户。当行动将     通过发生事件添加生成     它保持在数组内称为事件     AGRS

答案 4 :(得分:4)

仅供参考,sendere不是特定于ASP.NET或C#。请参阅Events (C# Programming Guide)Events in Visual Basic