DataTableCollection.CollectionChanging Event    
Definition
Important
Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.
Occurs while the DataTableCollection is changing because of DataTable objects being added or removed.
public:
 event System::ComponentModel::CollectionChangeEventHandler ^ CollectionChanging;
	public event System.ComponentModel.CollectionChangeEventHandler? CollectionChanging;
	public event System.ComponentModel.CollectionChangeEventHandler CollectionChanging;
	member this.CollectionChanging : System.ComponentModel.CollectionChangeEventHandler 
	Public Custom Event CollectionChanging As CollectionChangeEventHandler 
	Event Type
Examples
The following example demonstrates how to use the CollectionChanging event.
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());
}
Public Sub TableCollectionCollectionChanging()
    ' Create a DataSet with two tables
    Dim dataSet As New DataSet()
    AddHandler dataSet.Tables.CollectionChanging, _
        AddressOf Collection_Changing
    ' Create Customer table
    Dim customersTable As 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 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
	Remarks
For more information about how to handle events, see Handling and Raising Events.