0

我正在寻找一个在行数更改时触发的事件,即用户以任何方式添加一行或删除一行。我正在尝试使用此代码,但它不起作用。

设计师.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.UserDeletedRowDataGridView.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 回答
1

DataGridView 上有两个事件直接可用

RowsAdded

RowsRemoved

但是,这些仅在用户使用 DataGridView 功能添加或删除行时触发。如果您想检测从基础 DataTable(等)中添加或删除的行,那么您需要处理您的集合公开的事件。

DataTables 有两个事件:

TableNewRow

RowDeleted

如果这些事件不是您想要的,那么您可以在此处找到完整的 DataGridView 事件文档:http: //msdn.microsoft.com/en-us/library/x4dwfh7x

于 2012-06-28T01:00:49.060 回答