在列表框中为复制的项目提供ID

时间:2011-04-05 06:53:55

标签: c# winforms listbox

现在写,我可以在两个列表框之间复制项目。问题是,当我将相同的项目从listbox1复制到listbox2没有问题,但当我删除列表框2中的最后一项时,它将 删除最后一项之前的所有其他项,因为它是同一个对象。所以我需要提供我复制的项目和ID,所以当我将项目复制到listbox2时,它将与将被复制到listbox2的下一个项目不同。

private void CopyItemOver_Click(object sender, EventArgs e)
        {

            foreach (ElementControl item in ElementListBox.SelectedItems)
            {
                if (item == null)
                    return;
                else
                {
                    SequenceListBox.ValueMember = item.ID.ToString();
                    item.ID++;
                    SequenceListBox.Items.Add(item);
                    elementNumber++;

                }
                SequenceListBox.SelectedIndex = SequenceListBox.Items.Count - 1;
                SequenceListBox.SelectedIndex = -1;
                Update();

            }
            if (ElementListBox.SelectedItems.Count <= 0)
            {
                return;
            }
            else
            {
                var objElement = SequenceListBox.Items[itemCounter] as ElementControl;
                if (SequenceListBox.Items.Count == 1)
                {
                    ListViewItem item = new ListViewItem(new[] { ElementListBox.SelectedItems.Count.ToString() + "  Elements moved to SequenceListBox", "Ready", GetTime() + "  " + elementNumber});
                    LogListView.Items.Add(item);
                }
                else
                {
                    ListViewItem item1 = new ListViewItem(new[] { ElementListBox.SelectedItems.Count.ToString() + "  Elements moved to SequenceListBox", "Ready", GetTime() + "  " + elementNumber });
                    LogListView.Items.Add(item1);
                }
            }
            LogListView.Items[LogListView.Items.Count - 1].EnsureVisible();
        }

希望我的问题足够明确。

DuMaSexy。

1 个答案:

答案 0 :(得分:0)

而不是:

SequenceListBox.Items.Add(item);

使用:

SequenceListBox.Items.Add(new ListItem() { Text = item.Text, Value = item.Value);