被添加到一个列表框prevent重复项目 [英] Prevent duplicate items from being added to a ListBox

查看:169
本文介绍了被添加到一个列表框prevent重复项目的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有这样的code从一个的ListBox 另一个添加所选项目。我怎样才能prevent从增加一个项目两次用户?我想在的ListBox 他们加入 lstBoxToUserProjects 来只包含没有重复的条目不同的项目。

 保护无效btnAddSelectedItem_Click(对象发件人,EventArgs的发送)
{
    清单<&列表项GT; itemsToAdd =新的List<&列表项GT;();    的foreach(列表项的listItem在lstbxFromUserProjects.Items)
    {
        如果(listItem.Selected)
            itemsToAdd.Add(的listItem);
    }    的foreach(列表项的listItem在itemsToAdd)
    {
        lstBoxToUserProjects.Items.Add(的listItem);
    }
}

编辑:
下面是我最终使用

 保护无效btnAddSelectedItem_Click(对象发件人,EventArgs的发送)
{
    清单<&列表项GT; itemsToAdd =新的List<&列表项GT;();    的foreach(列表项的listItem在lstbxFromUserProjects.Items)
    {
        如果(listItem.Selected)
            itemsToAdd.Add(的listItem);
    }    的foreach(列表项的listItem在itemsToAdd)
    {        如果(!lstBoxToUserProjects.Items.Contains(的listItem))
        {
            lstBoxToUserProjects.Items.Add(的listItem);
        }
    }
}


解决方案

如果您绑定 lstBoxToUserProjects 列表框中数据源(HashSet的),那么你可以做一个简单的检查看是否提出了选择的项目是已经在目标:

 的foreach(列表项itemToAdd在itemsToAdd)
{
    如果(selectedItems.Contains(itemToAdd))继续;
    lstBoxToUserProjects.Items.Add(itemToAdd);
}

请注意,我提出一个HashSet的,因为那么你可以做的集高性能检查,而列表将不得不列举了检查匹配。

I have this code for adding selected items from one ListBox to another. How can I prevent the user from adding an item twice? I want the ListBox they are adding to lstBoxToUserProjects to only contain distinct items with no duplicate entries.

protected void btnAddSelectedItem_Click(object sender, EventArgs e)
{
    List<ListItem> itemsToAdd= new List<ListItem>();

    foreach (ListItem listItem in lstbxFromUserProjects.Items)
    {
        if (listItem.Selected)
            itemsToAdd.Add(listItem);
    }

    foreach (ListItem listItem in itemsToAdd)
    {
        lstBoxToUserProjects.Items.Add(listItem);
    }
}

EDIT: Here's what I ended up using

protected void btnAddSelectedItem_Click(object sender, EventArgs e)
{
    List<ListItem> itemsToAdd= new List<ListItem>();

    foreach (ListItem listItem in lstbxFromUserProjects.Items)
    {
        if (listItem.Selected)
            itemsToAdd.Add(listItem);
    }

    foreach (ListItem listItem in itemsToAdd)
    {

        if (!lstBoxToUserProjects.Items.Contains(listItem)) 
        {
            lstBoxToUserProjects.Items.Add(listItem);
        }
    }
}

解决方案

If you bind the lstBoxToUserProjects list box to a datasource (HashSet) then you could do a simple check to see if the item proposed for selection was already in the destination:

foreach(ListItem itemToAdd in itemsToAdd)
{
    if (selectedItems.Contains(itemToAdd)) continue;
    lstBoxToUserProjects.Items.Add(itemToAdd);
}

Note I'm proposing a HashSet because then you can do a performant check on the set whereas a List would have to be enumerated to check for a match.

这篇关于被添加到一个列表框prevent重复项目的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆