Ich habe dies durch Vererben die
.Net Liste implementiert
public class NavigationList<T> : List<T>
{
private int _currentIndex = 0;
public int CurrnetIndex
{
get
{
if (_currentIndex > Count - 1) { _currentIndex = Count - 1; }
if (_currentIndex < 0) { _currentIndex = 0; }
return _currentIndex;
}
set { _currentIndex = value; }
}
public T MoveNext
{
get { _currentIndex++; return this[CurrnetIndex]; }
}
public T MovePrevious
{
get { _currentIndex--; return this[CurrnetIndex]; }
}
public T Current
{
get { return this[CurrnetIndex]; }
}
}
Mit diesem wird ganz einfach
NavigationList<string> n = new NavigationList<string>();
n.Add("A");
n.Add("B");
n.Add("C");
n.Add("D");
Assert.AreEqual(n.Current, "A");
Assert.AreEqual(n.MoveNext, "B");
Assert.AreEqual(n.MovePrevious, "A");
Ermittelt den Index des gegebenen Punkt hilfreich sein kann. Füge 1 hinzu, um als nächstes zu bewegen, subtrahiere eins, um vor dich zu ziehen. Achten Sie darauf, Grenzen zu prüfen. – DGibbs
Index von +/- 1 .... was hast du probiert? – Sayse
Welche Art von Liste? Es ist sehr einfach mit einer (doppelt) verknüpften Liste, wie die 'LinkedList' Klasse. –