폴더에 이미지 위치 목록이 있습니다.목록을 반복하는 동안 인덱스가 범위 밖으로 벗어남 <string>
나는 사용자가 주어진 폴더의 이미지를 훑어 볼 수있는 커버 플로우 유형 영역을 에뮬레이트하는 다섯 개의 pictureBox를 가지고있다.
컬렉션의 첫 번째 이미지가 첫 번째 그림 상자로 설정되어 있고 cycleLeft()를 클릭하면 오류가 발생한다는 것을 알고 있습니다. 음수가 있습니다.
어떻게해야합니까? 예를 들어, 목록의 첫 번째 이미지가 이미 가장 왼쪽으로 설정되어 있고 누군가가 왼쪽으로 넘기는 경우 첫 번째 이미지를 목록의 마지막 위치에 놓습니다.
어떤 안내?
private void leftArrow_Click(object sender, EventArgs e)
{
cycleImagesLeft();
}
private void rightArrow_Click(object sender, EventArgs e)
{
cycleImagesRight();
}
public void cycleImagesLeft()
{
//imageThree is the center image, that's why I use it as a frame of reference.
int currentImage = pictures.IndexOf(imageThree.ImageLocation);
imageOne.ImageLocation = pictures[currentImage - 3];
imageTwo.ImageLocation = pictures[currentImage - 2];
imageThree.ImageLocation = pictures[currentImage - 1];
imageFour.ImageLocation = pictures[currentImage];
imageFive.ImageLocation = pictures[currentImage + 1];
}
public void cycleImagesRight()
{
int currentImage = pictures.IndexOf(imageThree.ImageLocation);
imageOne.ImageLocation = pictures[currentImage - 1];
imageTwo.ImageLocation = pictures[currentImage];
imageThree.ImageLocation = pictures[currentImage + 1];
imageFour.ImageLocation = pictures[currentImage + 2];
imageFive.ImageLocation = pictures[currentImage + 3];
}
존, 내리스트 사진의 .Count 속성을 사용 하시겠습니까? –
Jon,이 방법은 100 % 정상적으로 작동하지만 모듈러스 연산자가 왜이 상황에서 작동하는지 이해하지 못합니다. 나는 그것을 사용하는 것이 분할 후에 남은 자들을 찾는 것이라고 생각했다; 이 마술은 어떻게 작동합니까? –
@Sergio Tapia : Modulus는 인덱스가 항상 0과'List.Length' 사이의 범위에 있음을 보장합니다. – R0MANARMY