如何使用通用方法将组合框中的项目移动到列表框

时间:2015-09-23 00:10:01

标签: c# wpf object combobox listbox

这是我的第一篇文章,请耐心等待。使用C#我有一个带有组合框和列表框的Windows表单,并希望将项目从一个对象移动到另一个对象。我正在尝试创建一个方法,我可以传递这些对象,并让算法根据首先传递的对象来完成工作。这是我到目前为止所有的算法和算法在我的代码中的其他地方工作(当我明确声明Combobox1而不是Obj1,或Listbox1而不是Obj2)但我想从它的方法中删除它并创建自己的方法来允许保存列表项的任何类型的对象(例如Listbox,Combobox等)的列表项的移动... Visual Studios说Obj1和Obj2在当前上下文中不存在,我认为因为它们是在if块中定义的,但我不确定如何解决它。任何帮助表示赞赏。

private void UpdateSelectionListing(object MoveFilesTo, object MoveFilesFrom)
    {
        /* Identify what object will have items moved to, 
         * and what objects will have items moved from */ 
        if (MoveFilesTo is ComboBox && MoveFilesFrom is ListBox)
            {
                ComboBox Obj1 = (ComboBox)MoveFilesTo;
                ListBox Obj2 = (ListBox)MoveFilesFrom;
            }
        else if (MoveFilesTo is ListBox && MoveFilesFrom is ComboBox)
            {
                ComboBox Obj2 = (ComboBox)MoveFilesTo;
                ListBox Obj1 = (ListBox)MoveFilesFrom;
            }

        for (int n = Obj1.Items.Count - 1; n >= 0; --n)
            {
                Obj2.Items.Add(Obj1.Items[n].ToString());
                Obj1.Items.RemoveAt(n);
            }
        } 

1 个答案:

答案 0 :(得分:0)

您正在条件中创建实例,这会使其成为明显错误。此外,您可以更轻松地完成以下操作:

private void UpdateSelectionListing(object MoveFilesTo, object MoveFilesFrom)
 {
     ItemsControl ToObj=MoveFilesTo as ItemsControl;
     ItemsControl FromObj=MoveFilesFrom as ItemsControl;
     List<string> resultList=new List<string>();
      foreach (var item in FromObj.Items)
      {
         resultList.Add(item.ToString());
      }
      FromObj.ItemsSource=null;
      ToObj.ItemsSOurce=resultList;
      FromObj.Items.Refresh();
      ToObj.Items.Refresh();
 }