2013-09-27 27 views
0

你好,我正在c#中製作一個圖像查看器。事情是正確的,我可以看到點擊下一張圖片。對於給我例外。imagelist的索引是-1一個值創建一個異常

如何解決這個問題我的代碼是這樣的?

我得到這個消息

InvalidArgument =價值 '-1' 是無效的 '索引'。

代碼:

int I; 
if (pictureBox2.Visible == true) 
{ 
    I = I - 1; 
    pictureBox2.Image = imageList2.Images[I]; 
} 

該圖像列表具有4張圖片與+上升到第四然後用上述代碼下降到第一個。

當我再次按下按鈕時,它會顯示錯誤信息,我正在描述如何解決此問題?

+0

這取決於你如何解決它 - 異常足夠明確地說,索引是無效的,所以它取決於你的程序設計保持索引在有效範圍內。一種解決方案是將範圍之外的值作爲有效範圍中的最低/最高值處理...... –

回答

0

這保持我在範圍:

I = I - 1; 
I = I < 0 ? 0 : I >= imageList2.Images.Length ? imageList2.Images.Length - 1 : I; 
+0

看起來很難理解平均編碼器:http://en.wikipedia.org/wiki/KISS_principle –

+0

也許吧,但它是最好的我可以在這一刻做。 –

+0

那麼呢:'I = I - 1;如果(I <0)I = 0;'對於下一個圖像按鈕:'I = I + 1;如果(I> imageList2.Images.Length-1)I = imageList2.Images.Length-1;' –

0

如果你不想跟蹤Alessandro的例子是,你還可以嘗試使用老式的if/else如果

if(I<0) 
    I=4; 
else if(I>4) 
    I=0; 

你只I值更改後插入該代碼。

+0

您可以通過以下方式實現此目的:I + = 1;我%= imageCount; _see for% - > _ http://msdn.microsoft.com/en-us/library/0w4e0fzs.aspx –

+1

給我打電話過時,我發現if/else更容易閱讀。 –