DataTableCollection.CollectionChanged Evento

Definizione

Viene generato dopo che l'insieme DataTableCollection viene modificato in seguito all'aggiunta o alla rimozione di oggetti DataTable.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;
public event System.ComponentModel.CollectionChangeEventHandler CollectionChanged;
member this.CollectionChanged : System.ComponentModel.CollectionChangeEventHandler 
Public Custom Event CollectionChanged As CollectionChangeEventHandler 

Tipo evento

CollectionChangeEventHandler

Esempio

Nell'esempio seguente viene illustrato come utilizzare l' CollectionChanged evento.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

Commenti

Per altre informazioni su come gestire gli eventi, vedere la gestione e generazione di eventi.For more information about how to handle events, see Handling and Raising Events.

Si applica a