删除行中的数据网格
本文关键字:数据网 网格 数据 删除行 | 更新日期: 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();