我正在使用删除行索引来删除 datagridview 中的一行。
但是当删除一行时,datagridview 会自动追加下一行
第一次删除任何索引然后它是正确的,但在第二次删除第 1 行索引行
我正在使用这段代码:
for (int i = 0; i < path.Length; i++)
{
lpath.Add(path[i].ToString());
dataGridView1.Rows.RemoveAt(int.Parse(arr[i]));
}
我正在使用删除行索引来删除 datagridview 中的一行。
但是当删除一行时,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--; }
在for 循环中增加i比减少它有点奇怪。为什么不添加项目而不是清除所有行?
for (int i = 0; i < path.Length; i++) {
lpath.Add(path[i].ToString());
}
dataGridView1.Rows.Clear();
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]);
}