如何使用泛型方法将组合框中的项移动到列表框中
本文关键字:移动 列表 何使用 组合 泛型方法 | 更新日期: 2023-09-27 18:14:17
这是我的第一篇文章,请耐心等待。使用c#,我有一个带有组合框和列表框的Windows窗体,并希望将项目从一个对象移动到另一个对象。我试图创建一个方法,我可以通过这些对象,并有一个算法做的工作基于哪个对象首先通过。以下是我到目前为止所拥有的,算法在我的代码中的其他地方工作(当我明确地声明Combobox1而不是Obj1,或Listbox1而不是Obj2),但我想从它的方法中删除它,并创建自己的方法,以允许列表项的任何类型的对象的移动列表项,如Listbox, Combobox等…Visual studio说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);
}
}
您在if条件中创建实例,这使得明显错误。此外,您还可以使其更简单,如下所示:
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();
}