[英]Unchecking wrong item in CheckedListBox
我正在嘗試一個選項,以刪除選中的列表框中的所有未選中項。 一切都很好,但是當我得到兩個或多個同名商品時,它就出錯了。
例如:我在列表框中獲得了3個具有相同名稱的項目,其中第一個已選中。 現在我運行該事件,但是現在刪除了最后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++
,再次重復循環,轉到else,在else之前,檢查clbInstant(0)
的檢查狀態,不檢查clbInstant(1)
的檢查狀態,並且i
為1但是,在其他情況之后,我剩下2個項目,並且都未選中。 現在,它第二次運行循環,並刪除最后一個未選中的項目,結果剩下1個未選中的項目...
如果我有不同名字的物品,我一點問題都沒有。
你為什么不試試這個呢。
foreach(object itemChecked in checkedListBox1)
{
if(checkedListBox1.GetItemCheckState(checkedListBox1.Items.IndexOf(itemChecked))== CheckState.UnChecked)
checkedListBox1.Items.Remove(itemChecked)
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.