我有这段代码,用于将所选项目从一个 ListBox
添加到另一个。如何防止用户两次添加项目?我希望他们添加到 lstBoxToUserProjects
的 ListBox
只包含不同的项目,没有重复的条目。
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);
}
}
编辑: 这是我最终使用的
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);
}
}
}
最佳答案
如果您将 lstBoxToUserProjects
列表框绑定(bind)到一个数据源 (HashSet),那么您可以做一个简单的检查以查看建议选择的项目是否已经在目标中:
foreach(ListItem itemToAdd in itemsToAdd)
{
if (selectedItems.Contains(itemToAdd)) continue;
lstBoxToUserProjects.Items.Add(itemToAdd);
}
请注意,我建议使用 HashSet,因为这样您就可以对集合进行性能检查,而必须枚举 List 才能检查匹配。
关于c# - 防止将重复项添加到列表框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9419905/