【发布时间】:2015-07-24 06:02:39
【问题描述】:
我有一个奇怪的错误,我很难弄清楚。
如果我在我的 ListBox 中选择多个项目,然后选择向上箭头,则所有项目都会完美地向上移动一个空格,就好像它们是一个单元一样。但是,当单击向下箭头将列表中的每个项目向下移动一个位置时,不会发生这种情况。
相反,如果我选择偶数个项目然后单击向下箭头,则所有项目都不会移动,如果我选择奇数个项目然后单击向下箭头,则只有底部的项目会向下移动一个空间,而所有其他空间都留在原地。
有人知道为什么会发生这种情况吗?
这是我用来处理物品移动的代码:
private void MoveItemInSelectedItemsListBox(object sender)
{
if (selectedItemsListBox.SelectedItems.Count > 0)
{
// Build list of items to be moved
List<object> listOfItemsToBeMoved = new List<object>();
for (int i = 0; i < selectedItemsListBox.SelectedItems.Count; i++)
{
listOfItemsToBeMoved.Add(selectedItemsListBox.SelectedItems[i]);
}
for (int k = 0; k < listOfItemsToBeMoved.Count; k++)
{
var selectedItem = listOfItemsToBeMoved[k];
int selectedItemIndex = selectedItemsListBox.Items.IndexOf(selectedItem);
int numberOfItemsInList = selectedItemsListBox.Items.Count;
// If up arrow was clicked
if (sender.ToString().Contains("▲"))
{
if (selectedItemIndex == 0)
{
selectedItemsListBox.Items.Remove(selectedItem);
selectedItemsListBox.Items.Insert(numberOfItemsInList - 1, selectedItem);
selectedItemsListBox.SetSelected(numberOfItemsInList - 1, true);
}
else
{
selectedItemsListBox.Items.Remove(selectedItem);
selectedItemsListBox.Items.Insert(selectedItemIndex - 1, selectedItem);
selectedItemsListBox.SetSelected(selectedItemIndex - 1, true);
}
}
// If down arrow was clicked
else if (sender.ToString().Contains("▼"))
{
if (selectedItemIndex == numberOfItemsInList - 1)
{
selectedItemsListBox.Items.Remove(selectedItem);
selectedItemsListBox.Items.Insert(0, selectedItem);
selectedItemsListBox.SetSelected(0, true);
}
else
{
selectedItemsListBox.Items.Remove(selectedItem);
selectedItemsListBox.Items.Insert(selectedItemIndex + 1, selectedItem);
selectedItemsListBox.SetSelected(selectedItemIndex + 1, true);
}
}
}
}
}
【问题讨论】: