DataGridView行添加了事件

我正在使用DataGridView,我将List绑定到DataSource。

我已经有了正确的列,我准确地映射了字段。 我正在尝试做的是处理一种RowAddedRowDataBound (就像在aspx GridView中)事件。

我发现的唯一事件是RowsAdded但无论我拥有多少项,它在我第一次绑定时仅被激发4次,而在其他时间激发两次,具有值

e.RowCount:1 e.RowIndex:0 e.RowCount:[n-1] e.RowIndex:1 *其中n是我的物品数量

有没有办法可以找到每个项目的句柄?

编辑:不更改DataSource =绑定方法

我刚遇到同样的问题。 您可以获取从传递给RowsAdded事件处理程序的事件args添加的行的索引和范围。 使用此信息循环遍历每个添加的行。 e.RowIndexe.RowCount将让您确定添加的行。

 private void DataGridView1_RowsAdded(object sender, System.Windows.Forms.DataGridViewRowsAddedEventArgs e) { for (int index = e.RowIndex; index <= e.RowIndex + e.RowCount - 1; index++) { DataGridViewRow row = DataGridView1.Rows[index]; // Do something with the added row here // Raise a custom RowAdded event if you want that passes individual rows. } } 

如果你想要,你可以inheritancedatagridview并创建自己的网格,在上面的循环中抛出“RowAdded”事件。

对我来说最简单的方法是使用System.Windows.Forms.BindingSource。 将列表添加到该列表,然后使用BindingSource作为网格DataSource。 然后,它充当网格和数据的中间人。

然后可以从bindingsouce中使用几个事件。 其中一个是AddingNew。 您还可以使用它来捕获要添加或删除的行,以及其他一些内容。