C# 如何将选定的ListBox1项复制到同一索引处的ListBox2列表?
我在windows窗体上有两个列表框,在这些框的中间有两个按钮。一个显示右侧,另一个显示左侧。我想做的是,当我选择一些项目(比如在listbox1上)并单击右边的显示按钮时,我想将我在listbox1上选择的项目复制到ListBox2,复制的索引与我在listbox1上选择它们的索引相同。我可以这样做,但是我不能复制空行。这就是我的列表框的样子(我在这里添加数字只是为了方便地跟踪行)C# 如何将选定的ListBox1项复制到同一索引处的ListBox2列表?,c#,listbox,selecteditem,selectedindex,C#,Listbox,Selecteditem,Selectedindex,我在windows窗体上有两个列表框,在这些框的中间有两个按钮。一个显示右侧,另一个显示左侧。我想做的是,当我选择一些项目(比如在listbox1上)并单击右边的显示按钮时,我想将我在listbox1上选择的项目复制到ListBox2,复制的索引与我在listbox1上选择它们的索引相同。我可以这样做,但是我不能复制空行。这就是我的列表框的样子(我在这里添加数字只是为了方便地跟踪行) ListBox1 Listbox2 1.u a 2. 3.信用证 4.B 5.ME 6.F 7.n>>(右键)
ListBox1 Listbox2
1.u a
2.
3.信用证
4.B
5.ME
6.F
7.n>>(右键)
8.C
9这是因为在下面的一行中
foreach(listBox1.SelectedItems中的字符串o)
选择editemindexes.Add(listBox1.Items.IndexOf(o))
您将得到空字符串,它将始终返回空字符串的第一个索引
解决方案是使用所选的骰子,如下所示:
foreach (int selectedItemInd in listBox1.SelectedIndices)
{
selectedItemIndexes.Add(selectedItemInd);
}
您可能想使用SelectedDics而不是SelectedItems…非常感谢您的回答,先生,它神奇地修复了一切!非常感谢。
private void button4_Click(object sender, EventArgs e)
{
List<int> selectedItemIndexes = new List<int>();
foreach (string o in listBox1.SelectedItems)
selectedItemIndexes.Add(listBox1.Items.IndexOf(o));
for (int i = 0; i < selectedItemIndexes.Count; i++)
{
listBox2.Items[selectedItemIndexes[i]] = listBox1.Items[selectedItemIndexes[i]];
}
selectedItemIndexes.Clear();
}
private void button3_Click(object sender, EventArgs e)
{
List<int> selectedItemIndexes = new List<int>();
foreach (object o in listBox2.SelectedItems)
selectedItemIndexes.Add(listBox2.Items.IndexOf(o));
for (int i = 0; i < selectedItemIndexes.Count; i++)
{
listBox1.Items[selectedItemIndexes[i]] = listBox2.Items[selectedItemIndexes[i]];
}
selectedItemIndexes.Clear();
}
foreach (int selectedItemInd in listBox1.SelectedIndices)
{
selectedItemIndexes.Add(selectedItemInd);
}