删除行中的数据网格

本文关键字:数据网 网格 数据 删除行 | 更新日期: 2023-09-27 18:33:43

我正在使用删除行索引来删除数据网格视图中的行。

但是当删除一行时,datagridview 会自动附加下一行

第一次删除任何索引时,它是正确的,但在第二次删除第 1 行索引行

我正在使用以下代码:

for (int i = 0; i < path.Length; i++)
{
    lpath.Add(path[i].ToString());
    dataGridView1.Rows.RemoveAt(int.Parse(arr[i]));
}

删除行中的数据网格

使用

for 循环时删除行后必须减少"i"

请参阅以下代码

 for (int i = 0; i < path.Length; i++)
{
   lpath.Add(path[i].ToString());
  dataGridView1.Rows.RemoveAt(int.Parse(arr[i]));
  i--;  }

在我看来,您第一次将索引从dataGridView1上倾斜。

假设您有一个包含元素的列表 {1,2,3,4,5}如果我们现在删除索引 3 然后删除索引 4,我们最终会删除 3 和 5,给我们列表{1,2,4}但我们想删除 3 和 4 而不是 3 和 5

我认为您要做的是获取要删除的所有索引,并对它们进行排序并从上到下删除,而不是按该顺序删除 3 和 4,而是删除 4 和 3,给我们列表{1,2,5}

List<int> RemoveList = new List<int>();
for (int i = 0; i < path.Length; i++)
{
    lpath.Add(path[i].ToString());
    RemoveList.Add(int.Parse(arr[i]));
}
//Remove highest index first.
RemoveList.OrderByDescending(a=>a);
for (int i = 0; i < RemoveList.Count; i++)
{
    dataGridView1.Rows.RemoveAt(RemoveList[i]);
}

for 循环中增加 i 比减少它有点奇怪。为什么不添加项目而不是清除所有行?

for (int i = 0; i < path.Length; i++) {
    lpath.Add(path[i].ToString());
}
dataGridView1.Rows.Clear();