指数超出范围。必须是非负数且小于集合的大小。 4

时间:2015-07-02 05:19:45

标签: c# datagridview

我的datagridview有4行。 row [2]的名称为date1,row [3]的名称为date2。我还用Cells [2]和Cell [3]而不是Cells名称测试了这段代码。但我又收到了同样的错误。问题是索引不在范围之外。并且小于集合的大小。这是我的代码:

for (int i = 0; i < dgv1frmModateEghamat.Rows.Count; i++)
        {
            DateTime date1 = Convert.ToDateTime(dgv1frmModateEghamat.SelectedRows[i].Cells["date1"].Value);

            DateTime date2 = Convert.ToDateTime(dgv1frmModateEghamat.SelectedRows[i].Cells["date2"].Value);

            TimeSpan span = date2.Subtract(date1);

            int result = int.Parse(span.TotalDays.ToString());

            if (result >= int.Parse(textBoxX2.Text))
            {
                dgv1frmModateEghamat.SelectedRows[i].Visible = true;
            }

            else
            {

                CurrencyManager cr = (CurrencyManager)BindingContext[dgv1frmModateEghamat.DataSource];
                cr.SuspendBinding();

                dgv1frmModateEghamat.SelectedRows[i].Visible = false;
            }
        }

但是我看到了这个错误:索引超出了范围。必须是非负数且小于集合的大小。

2 个答案:

答案 0 :(得分:1)

您正在循环遍历行,但索引到SelectedRows。你需要遍历SelectedRows。

for (int i = 0; i < dgv1frmModateEghamat.SelectedRows.Count; i++)

答案 1 :(得分:0)

dgv1frmModateEghamat.SelectedRows的商品数量可能少于dgv1frmModateEghamat.Rows