首页 文章

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

提问于
浏览
1

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

Here is my code:

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

2 回答

  • 3

    当你取消选择行时,应该激活SelectionChanged事件,因此SelectedRows应该为空,因此你根本不能索引它 .

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

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

  • 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() +"'";
                }
    
            }
    

相关问题