寻找.NET DataTable事件和处理的解释

时间:2011-06-07 16:52:12

标签: .net c++ events datatable

我在.NET DataTable事件,处理,行动等方面遇到了麻烦。

我试图从MSDN库中了解到,但我发现我还没有理解它是如何一起工作的。我也无法找到任何其他来源(通过谷歌搜索)来解释它的来龙去脉。

例如,我试图了解有DataTable个事件(例如ColumnChangedRowChanged等),但也有DataRowColumnChangeEventArgs,{ {1}}等。他们如何联系/一起工作?

任何人都可以提供一个链接,提供DataColumnChangeEventArgs事件和处理的详尽说明吗? (或者你自己提供一个,如果你有这样的时间哈哈!)(特别希望DataTable中的例子,但如果用另一种语言,我现在可以做的)

非常感谢!

1 个答案:

答案 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
    }

这将允许您创建一个匿名方法来处理事件,但是在清理对象和取消注册任何处理程序时可能会出现问题。