sender和eventArgs是什么意思?如何使用它们(针对以下情况)?
场景:
我正在尝试使用删除功能构建自定义控件,并且我希望能够删除在包含许多相同自定义控件的页面上单击的控件。
Answers:
发件人是操作所针对的控件(例如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!";
}
}
sender
引用调用触发事件处理程序的事件的对象。如果您有许多使用同一事件处理程序的对象,这将很有用。
EventArgs
是一个虚拟的基类。它本身或多或少地无用,但是如果从中派生,则可以添加传递给事件处理程序所需的任何数据。
当您实现自己的事件时,请使用EventHandler
或EventHandler<T>
作为其类型。这样可以保证您在所有事件中都具有这两个参数(这是一件好事)。
手动将发送方转换为自定义控件的类型,然后使用它删除或禁用等。例如,如下所示:
private void myCustomControl_Click(object sender, EventArgs e)
{
((MyCustomControl)sender).DoWhatever();
}
“发送者”只是被操作(例如单击)的对象。
事件args为更复杂的控件(例如,树视图)子类化,因此您可以了解有关事件的更多详细信息,例如确切地单击它们的位置。
仅供参考,sender
而e
不是特定于ASP.NET或C#。请参见Visual Basic中的事件(《 C#编程指南》)和事件。