簡體   English   中英

取消選中CheckedListBox中的錯誤項目

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

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