DataTableCollection.CollectionChanged イベント
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
DataTableCollection オブジェクトを追加または削除したことが原因で DataTable が変更された後に発生します。
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
イベントの種類
例
次の例では、 イベントの使用方法を CollectionChanged 示します。
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
注釈
イベントを処理する方法の詳細については、次を参照してください。処理とイベントの発生します。
適用対象
GitHub で Microsoft と共同作業する
このコンテンツのソースは GitHub にあります。そこで、issue や pull request を作成および確認することもできます。 詳細については、共同作成者ガイドを参照してください。
.NET