0

行数が変更されたときにトリガーされるイベントを探しています。つまり、ユーザーが行を追加したり、何らかの方法で行を削除したりします。このコードを使用しようとしていますが、機能していません。

Designer.cs

this.dataGridView1.Rows.CollectionChanged += new System.Windows.Forms.DataGridViewCollectionChangedEventHandler(this.dataGridView1_CollectionChanged);

form1.cs

    private void dataGridView1_CollectionChanged(object sender, DataGridViewRowsAddedEventArgs e)
    {
    }

誰かが問題を見ていますか?

4

2 に答える 2

1

DataGridView で直接使用できる 2 つのイベントがあります。

RowsAdded

RowsRemoved

ただし、これらは、ユーザーが DataGridView 機能を使用して行を追加または削除している場合にのみ発生します。基になる DataTable (など) に追加または削除された行を検出する場合は、コレクションが公開するイベントを処理する必要があります。

DataTableには 2 つのイベントがあります。

TableNewRow

RowDeleted

これらのイベントが探しているものでない場合は、DataGridView イベントの完全なドキュメントをhttp://msdn.microsoft.com/en-us/library/x4dwfh7xで見つけることができます。

于 2012-06-28T01:00:49.060 に答える
1

DataGridView.UserDeletedRowおよびDataGridView.UserAddedRowイベントを調べてみましたか?

このようにハンドラーを設定することで、CollectionChanged イベントを発生させることもできました。

public Form1()
{
    InitializeComponent();
    this.dataGridView1.Rows.CollectionChanged += new CollectionChangeEventHandler(Rows_CollectionChanged);
}

void Rows_CollectionChanged(object sender, CollectionChangeEventArgs e)
{
    Debug.Print(e.Action.ToString()); // to use Debug.Print function add a using System.Diagnostics to your program
    Debug.Print(e.Element.ToString());
    DataGridViewRow row = (DataGridViewRow)e.Element;
}
于 2012-06-28T00:56:06.300 に答える