在C#中我有一个listbox1像这样:

lstCorsoAll.DisplayMember = "description";
lstCorsoAll.ValueMember = "id";
lstCorsoAll.DataSource = dtData;


其中dtData是通过SQL查询形成的DataTable。

我想使用按钮将选定的项目从listbox1复制到listbox2。

如果我使用此代码:

foreach (object item in listBox1.SelectedItems)
{
    listBox2.Items.Add(item);
}


在listbox2中,我总是得到System.data.datarowview,因为listbox1.SelectedItems是一个DataRowView

所以我用了:

listbox2.DataSource = listbox1.SelectedItems;
listbox2.DisplayMember = listbox1.DisplayMember;
listbox2.ValueMember = listbox1.ValueMember;


并且它工作正常(我获得了正确的显示值),但是如果重复该操作(我从listbox1中选择一个新值)并按下按钮,则listbox2中的项目始终相同,listbox2不会更新。

之后,我想使用listbox2项目valueMember作为MySQL表上的键将listbox2中的项目保存到数据库中

你能帮我吗?
非常感谢你

最佳答案

列表框未检测到您已更改数据源。仅当数据源已更改时才会刷新,因此请首先将数据源设置为null:

listBox1.DataSource = null;
listBox1.DataSource = data;


您还可以清除项目,然后再次设置数据源:

listBox1.Items.Clear();
listBox1.DataSource = data;

关于c# - 将数据从Listbox1复制到Listbox2,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22283966/

10-10 15:05