Это код, который я имею для перемещения элемента вниз на одно место в списке:
if (this.folderImages.SelectedIndex > -1 && this.folderImages.SelectedIndex < this.folderImages.Items.Count - 1)
{
string imageName = this.folderImages.SelectedItem as string;
int index = this.folderImages.SelectedIndex;
this.folderImages.Items.RemoveAt(index);
this.folderImages.Items.Insert(index + 1, imageName);
this.folderImages.SelectedIndex = index + 1;
}
и это для перемещения на одно место вверх:
if (this.folderImages.SelectedIndex > 0)
{
string imageName = this.folderImages.SelectedItem as string;
int index = this.folderImages.SelectedIndex;
this.folderImages.Items.RemoveAt(index);
this.folderImages.Items.Insert(index - 1, imageName);
this.folderImages.SelectedIndex = index - 1;
}
folderImages
- это, конечно, ListBox
, поэтому список является ListBox.ObjectCollection
, а не List<T>
, но он наследуется от IList
, поэтому он должен вести себя так же. Это помогает?
Конечно, первый работает, только если выбранный элемент не является последним элементом в списке, и последний, если выбранный элемент не является первым элементом.