指数超出范围。必须是非负且小于集合的大小。在c#中

时间:2013-05-06 10:00:35

标签: c# winforms datagridview

在我的应用程序中,它有两个名为datagridview1和datagridview2的datagridviews,我在datagridview1中有selectionChanged事件,它捕获在其中选择的数据,以便datagridview2的内容也根据所选行的产品名称进行更改在datagridview1中是。我不知道为什么我的索引超出范围,因为我已经检查过datagridview1中至少有1行和2列。 我正在使用DataView RowFilter函数。

这是我的代码:

private void datagridview1_SelectionChanged(object sender, EventArgs e)
{
    view_1.RowFilter = "product_name = '" + datagridview1.SelectedRows[0].Cells[1].Value.ToString() +"'";
}

2 个答案:

答案 0 :(得分:3)

当您取消选择行时,应该触发SelectionChanged事件,因此SelectedRows应为空,因此您根本无法索引它。

您应首先检查Length是否大于零,并且只有当它是,继续该功能。

此外,由于我看到您只处理一个选定的行,我建议您确保不允许在DataGridView控件上进行多行选择(除非需要其他内容,例如删除或无论)。

答案 1 :(得分:0)

如同Yorye Nathan所说:“你应该首先检查它的长度是否大于零,只有当它是,继续使用该功能。”

private void datagridview1_SelectionChanged(object sender, EventArgs e)
        {
            if(dataGridView1.SelectedRows.Count > 0)
            {
               view_1.RowFilter = "product_name = '" + datagridview1.SelectedRows[0].Cells[1].Value.ToString() +"'";
            }

        }