str*_*go0 76 .net events event-handling
sender和eventArgs是什么意思/指的是什么?我该如何使用它们(对于下面的场景)?
场景:
我正在尝试使用删除功能构建自定义控件,并且我希望能够删除在包含许多相同自定义控件的页面上单击的控件.
Noo*_*ilk 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!";
}
}
Run Code Online (Sandbox Code Playgroud)
Mat*_*ley 21
sender是指调用触发事件处理程序的事件的对象.如果您有许多使用相同事件处理程序的对象,这将非常有用.
EventArgs是一个虚拟的基类.它本身或多或少都是无用的,但是如果你从它派生,你可以添加你需要传递给事件处理程序的任何数据.
实现自己的事件时,请使用EventHandler或EventHandler<T>作为其类型.这可以保证您为所有事件准确地拥有这两个参数(这是一件好事).
手动将发件人转换为自定义控件的类型,然后使用它来删除或禁用等等.例如,类似这样的事情:
private void myCustomControl_Click(object sender, EventArgs e)
{
((MyCustomControl)sender).DoWhatever();
}
Run Code Online (Sandbox Code Playgroud)
"发件人"只是被操作的对象(例如,点击).
事件args被子类化为更复杂的控件,例如树视图,以便您可以了解有关事件的更多详细信息,例如他们点击的确切位置.