从ListBox转移到ComboBox时验证项的预先存在

时间:2016-05-03 23:10:10

标签: c# combobox listbox

在C#中,我有一个ListBox和一个ComboBox。我正在尝试将我的ListBox中的所有项目传输到我的ComboBox,同时检查ComboBox上是否已存在这些项目。重复的项目不应该转移,而其余项目应从ListBox中删除。我也打算将ComboBox中的项目转移到我的ListBox中。

我已经完成了所有工作,但删除已转移的项目并不像我应该的那样正常工作。

从List转移到Cbx时的代码

String[] items = intoArrayLst(lstItem2);
ArrayList moved = new ArrayList();

for (int i = 0; i < items.Length; i++)
{

   if (!cbxItem.Items.Contains(items.ElementAt(i)))
   {
     cbxItem.Items.Add(items.ElementAt(i));
     moved.Add(items.ElementAt(i));
   }
}

for (int i = 0; i < lstItem2.Items.Count; i++)
{
   if(moved.Contains(lstItem2.Items.GetItemAt(i)))
   {
    lstItem2.Items.RemoveAt(i);                        
   }
}

从ComboBox到ListBox

String[] items = intoArrayCBX(cbxItem);
ArrayList moved = new ArrayList();

for (int i = 0; i < items.Count(); i++)
{
    if(!lstItem2.Items.Contains(items.ElementAt(i)))
    {
        lstItem2.Items.Add(items.ElementAt(i));
        moved.Add(items.ElementAt(i));
    }                        
}

for (int i = 0; i < cbxItem.Items.Count; i++)
{
    if(cbxItem.Items.Contains(moved[i]))
    {
        cbxItem.Items.RemoveAt(i);                        
    }                        
}

非常感谢有关如何修复它的一些建议。

1 个答案:

答案 0 :(得分:0)

从列表中删除项目时避免索引问题的一种好方法是在列表中向后循环。这样,已经处理了在删除时被索引移位的项目。

for (int i = lstItem2.Items.Count - 1; i >= 0; i--)
{
    if (!cbxItem.Items.Contains(lstItem2.Items[i]))
    {
        cbxItems.Items.Add(lstItems2.Items[i]);
        lstItems2.Items.RemoveAt(i);
    }
}