如何通过选择数据网格中的项目将项目从一个列表移动到另一个列表

How to move Items from one list to another by selecting the items in a datagrid

我有几个使用项目列表作为源的数据网格。当我单击按钮或双击显示该项目的行中的任何单元格时,当我选择了网格中的项目时,我想将项目从 list1 移动到 list2。此过程将删除第一个列表中的所选项目,并将其添加到第二个列表中(它将从网格中消失并添加到链接到第二个列表的另一个网格中)。 两个列表中的项目都是相同 class 的一部分,并且都使用相同的构造函数,因此它们的所有参数都相同。 我一直在网上浏览并自己尝试不同的方法,但我无法找到解决方案,到目前为止,这是我想出的,但我无法让它工作。

public void Gladiators_Data_Grid_CellContentClick(对象发送者, DataGridViewCellEventArgs e) { 字符串 ItemMoving =
Data_Grid.Rows[e.RowIndex].细胞[0].Value.ToString();

        var item = List1.FirstOrDefault(x => x.Name == ItemMoving);

        if (item != null)
        {
            List1.Remove(item);
            List2.Add(item);
        }
    }

我的问题的解决方案不必遵循我尝试使用的模式,任何有效的方法都将受到高度赞赏,在此先感谢。

1) 如果您不允许用户重新排序项目,请使用所选行的索引。会快很多。

2) 你剩下的过程是正确的。但是,您忘记了将数据网格重新绑定到新列表。网格不会自动更新它们的 UI。

小伪例子:

var item = List1[grid1.currentrow.index];

List1.Remove(item);
List2.Add(item);

Grid1.datasource=list1;
Grid2.datasource=list2;