DataTableCollection.CollectionChanged Ereignis

Definition

Tritt ein, wenn die DataTableCollection aufgrund des Hinzufügens oder Entfernens von DataTable-Objekten geändert wurde.Occurs after the DataTableCollection is changed because of DataTable objects being added or removed.

public:
 event System::ComponentModel::CollectionChangeEventHandler ^ CollectionChanged;
public event System.ComponentModel.CollectionChangeEventHandler CollectionChanged;
member this.CollectionChanged : System.ComponentModel.CollectionChangeEventHandler 
Public Custom Event CollectionChanged As CollectionChangeEventHandler 

Beispiele

Im folgenden Beispiel wird die Verwendung des CollectionChanged -Ereignisses veranschaulicht.The following example demonstrates how to use the CollectionChanged event.

public static void TableCollectionCollectionChanged()
{
    // create a DataSet with two tables
    DataSet dataSet = new DataSet();

    dataSet.Tables.CollectionChanged +=
        new System.ComponentModel.CollectionChangeEventHandler(
        Collection_Changed);

    // create Customer table
    DataTable custTable = new DataTable("Customers");
    custTable.Columns.Add("customerId",
        typeof(int)).AutoIncrement = true;
    custTable.Columns.Add("name",
        typeof(string));
    custTable.PrimaryKey = new DataColumn[] { custTable.Columns["customerId"] };

    // create Orders table
    DataTable orderTable = new DataTable("Orders");
    orderTable.Columns.Add("orderId",
        typeof(int)).AutoIncrement = true;
    orderTable.Columns.Add("customerId", typeof(int));
    orderTable.Columns.Add("amount", typeof(double));
    orderTable.PrimaryKey = new DataColumn[] { orderTable.Columns["orderId"] };

    dataSet.Tables.AddRange(new DataTable[] { custTable, orderTable });

    // remove all tables
    // check if table can be removed and then
    // remove it, cannot use a foreach when
    // removing items from a collection
    // equivalent to dataSet.Tables.Clear()
    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_Changed(object sender,
    System.ComponentModel.CollectionChangeEventArgs e)
{
    Console.WriteLine("Collection_Changed Event: '{0}'\table element={1}",
        e.Action.ToString(), e.Element.ToString());
}
Public Sub TableCollectionCollectionChanged()
    ' create a DataSet with two tables
    Dim dataSet As New DataSet()

    AddHandler dataSet.Tables.CollectionChanging, _
        AddressOf Collection_Changed

    ' create Customer table
    Dim custTable As New DataTable("Customers")
    custTable.Columns.Add("customerId", _
        System.Type.GetType("System.Integer")).AutoIncrement = True
    custTable.Columns.Add("name", System.Type.GetType("System.String"))
    custTable.PrimaryKey = New DataColumn() {custTable.Columns("customerId")}

    ' create Orders table
    Dim orderTable As New DataTable("Orders")
    orderTable.Columns.Add("orderId", _
        System.Type.GetType("System.Integer")).AutoIncrement = True
    orderTable.Columns.Add("customerId", System.Type.GetType("System.Integer"))
    orderTable.Columns.Add("amount", System.Type.GetType("System.Double"))
    orderTable.PrimaryKey = New DataColumn() {orderTable.Columns("orderId")}

    dataSet.Tables.AddRange(New DataTable() {custTable, orderTable})

    ' Now remove all tables.
    ' First check to see if the table can be removed,
    ' then remove it from the collection.
    '
    ' You cannot use a For Each loop when
    ' removing items from a collection.
    Do While (dataSet.Tables.Count > 0)
        Dim table As DataTable = 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_Changed(ByVal sender As Object, _
    ByVal e As System.ComponentModel.CollectionChangeEventArgs)
    Console.WriteLine("Collection_Changed Event: '{0}'\table element={1}", _
        e.Action.ToString(), e.Element.ToString())
End Sub

Hinweise

Weitere Informationen zum Behandeln von Ereignissen finden Sie unter behandeln und Auslösen von Ereignissen.For more information about how to handle events, see Handling and Raising Events.

Gilt für: