DataTableCollection.CollectionChanging 事件
由于添加或移除 DataTable 对象而更改 DataTableCollection 时发生。
**命名空间:**System.Data
**程序集:**System.Data(在 system.data.dll 中)
语法
声明
Public Event CollectionChanging As CollectionChangeEventHandler
用法
Dim instance As DataTableCollection
Dim handler As CollectionChangeEventHandler
AddHandler instance.CollectionChanging, handler
public event CollectionChangeEventHandler CollectionChanging
public:
event CollectionChangeEventHandler^ CollectionChanging {
void add (CollectionChangeEventHandler^ value);
void remove (CollectionChangeEventHandler^ value);
}
/** @event */
public void add_CollectionChanging (CollectionChangeEventHandler value)
/** @event */
public void remove_CollectionChanging (CollectionChangeEventHandler value)
JScript 支持使用事件,但不支持进行新的声明。
备注
有关处理事件的更多信息,请参见 使用事件。
示例
下面的示例演示如何使用 CollectionChanging 事件。
Public Sub TableCollectionCollectionChanging()
' Create a DataSet with two tables
Dim dataSet As DataSet = New DataSet()
AddHandler dataSet.Tables.CollectionChanging, _
AddressOf Collection_Changing
' Create Customer table
Dim customersTable As DataTable = New DataTable("Customers")
customersTable.Columns.Add("customerId", _
System.Type.GetType("System.Integer")).AutoIncrement = True
customersTable.Columns.Add("name", _
System.Type.GetType("System.String"))
customersTable.PrimaryKey = New DataColumn() _
{customersTable.Columns("customerId")}
' Create Orders table
Dim ordersTable As DataTable = New DataTable("Orders")
ordersTable.Columns.Add("orderId", _
System.Type.GetType("System.Integer")).AutoIncrement = True
ordersTable.Columns.Add("customerId", _
System.Type.GetType("System.Integer"))
ordersTable.Columns.Add("amount", System.Type.GetType("System.Double"))
ordersTable.PrimaryKey = New DataColumn() {ordersTable.Columns("orderId")}
' Add the tables to the DataTableCollection
dataSet.Tables.AddRange(New DataTable() {customersTable, ordersTable})
' Remove all tables
' First check to see if the table can be removed and
' then remove it.
'
' You cannot use a For Each loop to remove items
' from a collection.
Do While (dataSet.Tables.Count > 0)
Dim table As DataTable
table = dataSet.Tables(0)
If (dataSet.Tables.CanRemove(table)) Then
dataSet.Tables.RemoveAt(0)
End If
Loop
Console.WriteLine("dataSet has {0} tables", dataSet.Tables.Count)
End Sub
Private Sub Collection_Changing(ByVal sender As Object, _
ByVal e As System.ComponentModel.CollectionChangeEventArgs)
' Implementing this event allows you to abort a change
' to the collection by raising an exception which you can
' catch.
Console.WriteLine( _
"Collection_Changing Event: '{0}'\table element={1}", _
e.Action.ToString(), e.Element.ToString())
End Sub
public static void TableCollectionCollectionChanging()
{
// Create a DataSet with two tables
DataSet dataSet = new DataSet();
// Assign the event-handler function for the
// CollectionChangeEvent.
dataSet.Tables.CollectionChanging +=
new System.ComponentModel.CollectionChangeEventHandler(
Collection_Changing);
// create Customer table
DataTable customersTable = new DataTable("Customers");
customersTable.Columns.Add("customerId",
typeof(int)).AutoIncrement = true;
customersTable.Columns.Add("name",
typeof(string));
customersTable.PrimaryKey = new DataColumn[] { customersTable.Columns["customerId"] };
// create Orders table
DataTable ordersTable = new DataTable("Orders");
ordersTable.Columns.Add("orderId",
typeof(int)).AutoIncrement = true;
ordersTable.Columns.Add("customerId",
typeof(int));
ordersTable.Columns.Add("amount",
typeof(double));
ordersTable.PrimaryKey = new DataColumn[] { ordersTable.Columns["orderId"] };
dataSet.Tables.AddRange(new DataTable[] { customersTable, ordersTable });
// Check to see if each table can be removed and then
// remove it.
while (dataSet.Tables.Count > 0)
{
DataTable table = dataSet.Tables[0];
if (dataSet.Tables.CanRemove(table))
{
dataSet.Tables.RemoveAt(0);
}
}
Console.WriteLine("dataSet has {0} tables",
dataSet.Tables.Count);
}
private static void Collection_Changing(object sender,
System.ComponentModel.CollectionChangeEventArgs e)
{
// Implementing this event allows you to abort a change
// to the collection by raising an exception which you can
// catch.
Console.WriteLine("Collection_Changing Event: '{0}'\table element={1}",
e.Action.ToString(), e.Element.ToString());
}
平台
Windows 98、Windows 2000 SP4、Windows CE、Windows Millennium Edition、Windows Mobile for Pocket PC、Windows Mobile for Smartphone、Windows Server 2003、Windows XP Media Center Edition、Windows XP Professional x64 Edition、Windows XP SP2、Windows XP Starter Edition
.NET Framework 并不是对每个平台的所有版本都提供支持。有关受支持版本的列表,请参见系统要求。
版本信息
.NET Framework
受以下版本支持:2.0、1.1、1.0
.NET Compact Framework
受以下版本支持:2.0、1.0
请参见
参考
DataTableCollection 类
DataTableCollection 成员
System.Data 命名空间