我的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;
}
}
但是我看到了这个错误:索引超出了范围。必须是非负数且小于集合的大小。
答案 0 :(得分:1)
您正在循环遍历行,但索引到SelectedRows。你需要遍历SelectedRows。
for (int i = 0; i < dgv1frmModateEghamat.SelectedRows.Count; i++)
答案 1 :(得分:0)
dgv1frmModateEghamat.SelectedRows
的商品数量可能少于dgv1frmModateEghamat.Rows
。