防止在ListBox中删除某些项目

时间:2013-09-16 08:05:47

标签: c# winforms

所以这里是我允许我删除列表框中所选项目的代码。

    ListBox.SelectedObjectCollection selectedItems = new ListBox.SelectedObjectCollection(lstOutput);
    selectedItems = lstOutput.SelectedItems;

    if (lstOutput.SelectedIndex != -1)
    {
        for (int i = selectedItems.Count - 1; i >= 0; i--)
            lstOutput.Items.Remove(selectedItems[i]);
    }
    else
        MessageBox.Show("Debe seleccionar un email");

问题是我在顶部有标签显示输出是什么。我还在页面底部有统计信息。代码现在的方式,我能够删除那些我不想要的。我不确定如何防止这些被删除。

1 个答案:

答案 0 :(得分:1)

首先不需要火线,你可以将第一行合并到:

ListBox.SelectedObjectCollection selectedItems = lstOutput.SelectedItems;

现在删除您要保留的项目。你可以创造一个条件。

for (int i = selectedItems.Count - 1; i >= 0; i--)
{
     if(selectedItems[i] is /*here is where you come and check if the current selected item is of the type you don't want to delete*/)
            lstOutput.Items.Remove(selectedItems[i]);
}

如果你告诉我“顶部标签”的类型和“底部的统计数据”的类型,我会把它放在答案中

修改

与你所说的相似:

List<object> fixedItems = new List<object>();
fixedItems.Add(/*Your labels and statistics*/);

然后再做

for (int i = selectedItems.Count - 1; i >= 0; i--)
{
     if(fixedItems.Contains(selectedItems[i]) == false)
            lstOutput.Items.Remove(selectedItems[i]);
}

您需要添加的列表

using System.Collections.Generic;

在页面的开头