簡體   English   中英

如何通過選擇C#中的復選框從datagridview刪除多行?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM