簡體   English   中英

Visual Studio 2012 C#:刪除所有* CheckedListBox中的* Checked項目

[英]Visual Studio 2012 C#: Remove ALL *Checked Items in a CheckedListBox

我對C#和Visual Studio 2012都是一個極端的新手,如果這是一個簡單的問題,對不起。 因此,作為VS2012的第一個小項目,我正在制作一個待辦事項應用程序。 我有一個名為“ checkedListBox1”的CheckedListBox和一個名為“ markButton”的按鈕,用於一次刪除所有已標記(或選中)的項目。 我已經編寫了以下代碼,但是正如您在我的評論中看到的那樣,它做了一些奇怪的事情:從我擁有的已檢查項目集合中刪除所有其他已檢查項目。


private void markButton_Click(object sender, EventArgs e)
{
    // create a collection of the checked items in the to do list
    // then remove each of them.
    // **** ERROR: It deletes every other checked item 
    // so it deletes indeces 0..2..4..6... each time.
    CheckedListBox.CheckedItemCollection checkedItems = checkedListBox1.CheckedItems;
    for (int i = 0; i < checkedItems.Count; i++)
    {
        checkedListBox1.Items.Remove(checkedItems[i].ToString());
    }
}

刪除項目時, checkedItems集合會變小。 只需反復刪除第一個:

while (checkedItems.Count > 0)
{
    checkedListBox1.Items.Remove(checkedItems[0]);
}

或以相反的順序刪除:

for (int i = checkedItems.Count; i > 0; )
{
    checkedListBox1.Items.Remove(checkedItems[--i]);
}

更好的是,使用CheckedIndices,它避免了搜索匹配項和重復項的混亂:

var checkedItemIndices = checkedListBox1.CheckedIndices;
for (int i = checkedItemIndices.Count; i > 0; )
{
    checkedListBox1.Items.RemoveAt(checkedItemIndices[--i]);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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