如何将选择的ListBox1项复制到相同索引的ListBox2列表中
本文关键字:索引 ListBox2 列表 复制 选择 ListBox1 | 更新日期: 2023-09-27 17:53:57
我有两个窗口窗体的列表框和两个按钮在这些框的中间。一个显示右边,另一个显示左边。我想做的是,当我在listbox1上选择了一些项目,然后点击右边的显示按钮,我想把我在listbox1上选择的项目复制到listbox2,在相同的索引上,我在1上选择了它们。我可以这样做,但是我不能复制空行。这就是我的列表框的样子(我添加数字只是为了方便地跟踪这里的行)。
ListBox1 Listbox2
1. u a
2.
3. l c
4. b
5. m e
6. f
7. n >>(right button)
8. c
9. z <<(left button) t
10. q
11. s
12.
13. g b
现在在这些列表框中,如果我选择任何带有文本的项目,然后点击按钮,它会将这些项目复制到另一个列表框中。但是如果我选择任何没有文本的行,任何空行,然后点击按钮,它不会改变任何东西。它不会使另一个框项为空。这是代码,我是如何复制这些行的。
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 (string 0 in listBox1.SelectedItems)selectedItemIndexes.Add (listBox1.Items.IndexOf (o));
你将得到一个空字符串,并且它将始终返回空字符串的第一个索引。
解决方案是像下面这样使用选定的索引:
foreach (int selectedItemInd in listBox1.SelectedIndices)
{
selectedItemIndexes.Add(selectedItemInd);
}