下面我有一個表中包含了學生在一個DataGridView結果: -爲什麼我的if else語句拒絕讀取某一行?
ID NAME RESULT
1 Peter PASS
1 Peter SILVER
2 Sam FAIL
2 Sam SILVER
3 Simon FAIL
4 Cliff PASS
5 Jason FAIL
5 Jason FAIL
6 Leonard PASS
6 Leonard FAIL
我想製作一個簡單的程序,將在一個按鈕的點擊過濾掉某些行的基礎上的結果。我現在所取得的成就是能夠篩選出那些以PASS和/或SILVER作爲結果的人,並只顯示FAIL。
現在的問題是,無論何時點擊按鈕,它都會刪除帶有合格和/或銀色的行,第二行除外:1 Peter SILVER
。與此表留給我作爲下面的最終結果是: -
來解決這個問題的唯一方法是現在再次點擊該按鈕。
下面是按鈕的源代碼: -
private void btnGenerate_Click(object sender, EventArgs e)
{
if (dtList.Rows.Count != 0)
{
try
{
foreach (DataGridViewRow dr in dtList.Rows)
{
//Column names in excel file
string colID = dr.Cells["ID"].Value.ToString();
string colName = dr.Cells["Name"].Value.ToString();
string colResult = dr.Cells["Result"].Value.ToString();
if (!colResult.Equals("FAIL", StringComparison.InvariantCultureIgnoreCase))
{
dtList.Rows.Remove(dr);
}
}
}
catch
{
}
}
}
空捕獲會傷害你 –
這不是一個答案,但使條件'Count> 0'更有意義,並且可能會影響後者。 –
此外,當您嘗試從您正在迭代的集合中刪除行時,代碼是否會失敗? –