C# 如何检查是否有任何行添加到Datagridview

C# 如何检查是否有任何行添加到Datagridview,c#,datagridview,bindingsource,C#,Datagridview,Bindingsource,我在winform上使用Datagridview控件,并为数据使用bindingsource。数据在bindingsource中填充,并相应地填充datagridview。我正在寻找一个事件或类似的东西,当bindingsource中的一行添加到datagridview时,它会触发 我想对添加的行执行一些操作。我尝试使用RowsAdded事件,但未正确检索e.RowIndex Edit1:假设数据库表中有10条记录。我将这些数据提取到bindingsource中,并将bindingsource用

我在winform上使用Datagridview控件,并为数据使用bindingsource。数据在bindingsource中填充,并相应地填充datagridview。我正在寻找一个事件或类似的东西,当bindingsource中的一行添加到datagridview时,它会触发

我想对添加的行执行一些操作。我尝试使用RowsAdded事件,但未正确检索e.RowIndex

Edit1:假设数据库表中有10条记录。我将这些数据提取到bindingsource中,并将bindingsource用作Datagridview的数据源。现在,在向Datagridview添加行时,我想对Datagridview执行一些UI操作。我使用了RowsAdded事件,但它始终将RowIndex设置为0或1。我还尝试了RowsCount上的foreach循环,如果我调试代码,执行流程将符合预期,但在UI上没有得到反映。完成所有操作后,我调用了Datagridview1.refresh()


您能帮我解决这个问题吗?

当用户使用新记录行添加新行时,此事件处理程序中的DataGridViewRowsAddedEventArgs.RowIndex值等于新记录行的新位置索引,比刚才添加的行大一个

但是,当以编程方式添加行时,RowIndex值是 添加了第一行的索引


将获取准确的行参考

,具体取决于绑定后要执行的操作。您可以使用Control.BindingContextChanged事件对网格行进行迭代:

private void dataGridView1_BindingContextChanged(object sender, EventArgs e) 
{
    foreach (var row in dataGridView1.Rows) {

    }
}

如果它不起作用,你能说一下绑定后你到底想完成什么吗?

还有一个
行数
属性可能有助于解决索引问题(只是一个猜测,因为你没有解释问题是什么),没有正确检索并不会说明什么!真的很抱歉简短的描述。事实上,我也不明白该如何解释这个场景。请查找Edit1。这是第一次迭代。当我单击菜单项打开表单时,第一次反映了UI更改。但是,如果我从菜单项打开相同的表单,而不关闭表单,则不会应用UI更改。(我正在改变一些单元格的背景色)。我用一个按钮创建了一个窗体,并单击打开了另一个具有网格的窗体的两个实例。我在上面的方法中添加了代码来更改某些单元格的bg颜色,这些更改反映在两个打开的实例中,因此无法复制
private void dataGridView1_BindingContextChanged(object sender, EventArgs e) 
{
    foreach (var row in dataGridView1.Rows) {

    }
}