[英]How to delete multiple rows from a datagridview by selecting the checkboxes in C#?
我有datagridview和header復選框來檢查復選框列(所有復選框的列索引為0)中的所有復選框。 在刪除的按鈕事件中,我有以下代碼:
for (int i = 0; i < datagridview.Rows.Count; i++) {
if (Convert.ToBoolean(datagridview.Rows[i].Cells[0].Value) == true) {
datagridview.Rows.RemoveAt(i);
}
}
隨着行的刪除, datagridview.rows.count持續減少,但循環中的I持續增加。 因此,它不會刪除所有選中的行,而是只刪除其中一些。 隨着代碼的增加,它不會刪除行索引為0、1、2等的行,並在datagridview中添加新數據。
問題在於,通過不斷增加刪除索引,可以跳過列表中的下一項:
0: [X] Item 0
1: [X] Item 1
2: [X] Item 2
在迭代0上...我們刪除索引0上的
Item 0
0: [X] Item 1
1: [X] Item 2
在迭代1上...我們刪除索引1上的
Item 2
,但是我們跳過了現在在索引0上的Item 1
因此,您應該以相反的順序迭代列表,這樣在刪除項目時, 下一個 上一項的索引仍然相同:
for (int i = datagridview.Rows.Count; i >= 0 ; i--)
{
// ....
}
在從Charles得到如下提示后,我解決了該問題。 謝謝!
for (int i = 0; i < dgvBaleDisposition.Rows.Count; i++)
{
if (Convert.ToBoolean(dgvBaleDisposition.Rows[i]
.Cells[0].Value) == true)
{
dgvBaleDisposition.Rows.RemoveAt(i);
}
i = i - 1;
j = j + 1;
if (j == countRows)
{
break;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.