C# 如何将选定的ListBox1项复制到同一索引处的ListBox2列表?

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>>(右键)

我在windows窗体上有两个列表框,在这些框的中间有两个按钮。一个显示右侧,另一个显示左侧。我想做的是,当我选择一些项目(比如在listbox1上)并单击右边的显示按钮时,我想将我在listbox1上选择的项目复制到ListBox2,复制的索引与我在listbox1上选择它们的索引相同。我可以这样做,但是我不能复制空行。这就是我的列表框的样子(我在这里添加数字只是为了方便地跟踪行)

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);
        }