Freigeben über


DataTableCollection.CollectionChanging-Ereignis

Tritt ein, während die DataTableCollection aufgrund des Hinzufügens oder Entfernens von DataTable-Objekten geändert wird.

Namespace: System.Data
Assembly: System.Data (in system.data.dll)

Syntax

'Declaration
Public Event CollectionChanging As CollectionChangeEventHandler
'Usage
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 unterstützt die Verwendung von Ereignissen, aber nicht die Deklaration von neuen Ereignissen.

Hinweise

Weitere Informationen über die Behandlung von Ereignissen finden Sie unter Behandeln von Ereignissen.

Beispiel

Im folgenden Beispiel wird die Verwendung des CollectionChanging-Ereignisses veranschaulicht.

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());
}

Plattformen

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile für Pocket PC, Windows Mobile für Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.

Versionsinformationen

.NET Framework

Unterstützt in: 2.0, 1.1, 1.0

.NET Compact Framework

Unterstützt in: 2.0, 1.0

Siehe auch

Referenz

DataTableCollection-Klasse
DataTableCollection-Member
System.Data-Namespace