0
我正在嘗試創建一個選項,以刪除選中的列表框中的所有未選中的項目。一切都很順利,但是當我得到2個或更多具有相同名稱的項目時,它會出錯。在CheckedListBox中取消選中錯誤的項目
例如:我有三個項目在列表框中的名稱相同,第一個選中。 我現在運行的情況下,但現在最後2被刪除,第一個是選中...
private void removeAllUncheckedProcessesToolStripMenuItem_Click(object sender, EventArgs e)
{
int i = 0;
while (true)
{
if (clbInstant.Items.Count - i == 0)
{
break;
}
if (clbInstant.GetItemCheckState(i) == CheckState.Checked)
{
i++;
}
else
{
clbInstant.Items.Remove(clbInstant.Items[i]);
}
}
}
如果我運行調試器,它進入循環,它i++
,再次重複這個循環,在其他情況下,在clbInstant(0)
的其他檢查狀態被檢查之前,clbInstant(1)
的檢查狀態未被檢查,並且i
是1.但是在其他情況下,我得到2個項目,兩個都未被檢查。 現在它運行第二個最後一次循環,並刪除最後選中的項目,有1項未選中保持結果...
如果我有不同的名稱的項目,我一點問題都沒有。 ..
修正的答案。 – kyndigs 2010-10-18 10:45:42
.CheckedItems是可能的,但由於某種原因.UncheckedItems不是... – Ivar 2010-10-18 11:01:40
對不起,這是一個錯字:p現在排序,這應該通過所有列表項目並刪除未選中的項目。 – kyndigs 2010-10-18 11:02:30