被添加到一个列表框prevent重复项目 [英] Prevent duplicate items from being added to a ListBox
问题描述
我有这样的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屋!