2017-01-06 4 views
1

Sagen wir, ich habe eine Liste: 1 5 6 10Rundschau mit vorherigen und nächsten Schaltflächen

Wenn ich als nächstes klicken Sie und das Listenelement zeigte bereits 10 .. ich den Benutzer zurück auf 1 und gleiche bringen wollen andersherum wenn ich vorher klicke und der angezeigte Listeneintrag ist schon 1 .. Ich möchte den User zurück auf 10 bringen. Hier ist was ich ausprobiert habe aber ich bekomme immer dass das "i (contor) nicht negativ sein kann oder größer als List.Count“:

public int i = 0; 

    private void nextbutton_Click(object sender, EventArgs e) 
    { 
     ++i; 
     if (sweaterclicked) 
     { 
      if(SweatersList.Count != 1) 
      if (i >= SweatersList.Count - 1) 
      { 
       i = 0; 
       pictureBox1.Image = SweatersList[i]; 
      } 
      else pictureBox1.Image = SweatersList[i]; 
     } 
    } 

    private void previousbutton_Click(object sender, EventArgs e) 
    { 
     --i; 
     if (sweaterclicked) 
     { 
      if (SweatersList.Count != 1) 
      { 
      if (i < 0) 
      { 
       i = SweatersList.Count; 
       pictureBox1.Image = SweatersList[i]; 
      } 
      else pictureBox1.Image = SweatersList[i]; 
      } 
     } 
    } 
+1

Welche '' '' '' '' '' '' '' '' sonst gehören sollen? –

+1

zweites 'if' mit erstem' else' was bedeutet, dass 'else' zu' if (i <0) ' –

+2

@EdPlunkett gehört, das für Sie bearbeitet wurde. Siehe das Update! –

Antwort

0

Array oder Liste Indizes in C# beginnen bei Null, so der größte in-Entfernungs-Index ist eins kleiner als die Anzahl der Elemente in der Sammlung. Daher SweatersList.Count, daher i, ist hier außer Reichweite:

i = SweatersList.Count; 
pictureBox1.Image = SweatersList[i]; 

Also, wenn Sie in der letzten gültigen Index von vorne beginnen möchten, müssen Sie eine von SweatersList.Count subtrahieren:

i = SweatersList.Count - 1; 

I don Ich weiß nicht, warum Sie außerhalb der if (sweaterclicked) Blöcke inkrementieren und dekrementieren, aber ich nehme an, Sie tun es.

+2

Ja, es funktioniert jetzt ganz gut. Eine weitere Hinzufügung ist hier: "if (i> = SweatersList.Count - 1)" es muss 'if (i> SweatersList.Count - 1)' sein. –

+0

@ A.Ispas Guter Fang! –

Verwandte Themen