我在.NET DataTable
事件,处理,行动等方面遇到了麻烦。
我试图从MSDN库中了解到,但我发现我还没有理解它是如何一起工作的。我也无法找到任何其他来源(通过谷歌搜索)来解释它的来龙去脉。
例如,我试图了解有DataTable
个事件(例如ColumnChanged
,RowChanged
等),但也有DataRowColumnChangeEventArgs
,{ {1}}等。他们如何联系/一起工作?
任何人都可以提供一个链接,提供DataColumnChangeEventArgs
事件和处理的详尽说明吗? (或者你自己提供一个,如果你有这样的时间哈哈!)(特别希望DataTable
中的例子,但如果用另一种语言,我现在可以做的)
非常感谢!
答案 0 :(得分:1)
看起来你在事件本身和传递给你的实际事件处理程序的EventArgs参数之间感到困惑。
当您注册处理某个活动时,您需要了解一些事项。我将以您的ColumnChanged
事件为例。
首先,您正在注册的活动是ColumnChanged
活动(看起来很简单,但为了清楚起见我将其包括在内)。
第二个是要注册一个事件,你需要一个事件处理程序。该事件处理程序必须匹配事件提供的委托签名。在ColumnChanged的情况下,委托必须采用两个参数:1)一个名为sender的对象和2)一个用于传递名为DataColumnChangedEventArgs
的事件特定参数的对象。您的方法应该类似于:
public void ColumnChangedHandler(object sender, DataColumnChangedEventArgs e)
{
// Do some work here when the event is fired
}
完成后,最后一步实际上是注册处理程序来处理事件:
someDataTable.ColumnChanged +=
new DataColumnChangeEventHandler(ColumnChangedHandler);
现在,如果你环顾四周,你可能会注意到有些人使用快捷语法一步一步地创建一个处理程序:
someDataTable.ColumnChanged += (object sender, DataColumnChangedEventArgs e)
{
// Do some work here when the event is fired
}
这将允许您创建一个匿名方法来处理事件,但是在清理对象和取消注册任何处理程序时可能会出现问题。