Я разрывался в этом вопросе, точно отвечайте, в чем заключается ваша проблема, или предлагайте изменить его.
@ Марк прав, вы должны использовать какой-то List для вашего объекта Planeили ReadOnlyObservableCollection ).
@ Marc также прав, что проблема в том, что вы пытаетесь сдвинуть значения с конца списка и перезаписать их.В этих случаях лучше начать с точки удаления и потянуть их вниз.
Так что, если у вас есть {1,2,3,4,5,6,7,8,9,10}, и выудалить из пункта 5, у вас будет {1,2,3,4,10,10,10,10,10,10}.Код ниже позволит вам в итоге {1,2,3,4,6,7,8,9,0}
placeholder = lsbplanes.SelectedIndex;
int idx = placeholder;
while (idx < lsbplanes.Items.Count)
{
newplane.PlanePosition.Counter = idx+1;
placex = newplane.PlanePostion.X;
placey = newplane.PlanePostion.Y;
placespeed = newplane.Getspeed();
placedic = newplane.Getdirection();
newplane.PlanePostion.Counter = idx;
newplane.PlanePostion.X = placex;
newplane.PlanePostion.Y = placey;
newplane.PlanePostion.Speed = placespeed;
newplane.PlanePostion.Direction = placedic;
idx++;
}
// Need to zero out elements at the end
newplant.PlanePosition.Counter = lsbplanes.Items.Count;
/* Zeroing code goes here */
newplane.PlanePosition.Counter = placeholder;
lsbplanes.Items.RemoveAt(lsbplanes.SelectedIndex);