DataTableCollection.CollectionChanged-Ereignis
Tritt ein, wenn die DataTableCollection aufgrund des Hinzufügens oder Entfernens von DataTable-Objekten geändert wurde.
Namespace: System.Data
Assembly: System.Data (in system.data.dll)
Syntax
'Declaration
Public Event CollectionChanged As CollectionChangeEventHandler
'Usage
Dim instance As DataTableCollection
Dim handler As CollectionChangeEventHandler
AddHandler instance.CollectionChanged, handler
public event CollectionChangeEventHandler CollectionChanged
public:
event CollectionChangeEventHandler^ CollectionChanged {
void add (CollectionChangeEventHandler^ value);
void remove (CollectionChangeEventHandler^ value);
}
/** @event */
public void add_CollectionChanged (CollectionChangeEventHandler value)
/** @event */
public void remove_CollectionChanged (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 CollectionChanged-Ereignisses veranschaulicht.
Public Sub TableCollectionCollectionChanged()
' create a DataSet with two tables
Dim dataSet As DataSet = New DataSet()
AddHandler dataSet.Tables.CollectionChanging, _
AddressOf Collection_Changed
' create Customer table
Dim custTable As DataTable = 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 DataTable = 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
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());
}
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