所以我試圖在用C#的WinForms匹配的遊戲。我看了這個MSDN項目:https://msdn.microsoft.com/en-us/library/dd553230.aspx。我用圖像列表替換了圖標列表。根據這篇文章,我的圖像應該每個圖像顯示兩次。但是每當它再次碰到相同的數字時,它就說它超出了界限,這就是我認爲正在發生的事情。這裏是我的代碼:的ImageList扔我在ImageList.RemoveAt outofbounds異常()
public frmMain()
{
InitializeComponent();
imageInit();
imgToLbl();
}
Random rndImage = new Random();
ImageList images = new ImageList();
//list of file names
List<string> files = new List<string>()
{
"Bavaria", "Denemarken", "Engeland",
"Frankrijk", "Nederland", "oostenrijk",
"Polen", "Pruissen", "Rusland", "Schotland",
"Spanje", "Zweden"
};
// Method to put the files into the imagelist
private void imageInit()
{
for(int i = 0; i < 12; i++)
{
images.Images.Add(files[i], Image.FromFile("../../images/" + files[i] + ".png"));
}
}
// method to assign the images to a label in my form
private void imgToLbl()
{
foreach (Control ctrl in tableLayoutPanel1.Controls)
{
Label imgLbl = ctrl as Label;
if (imgLbl != null)
{
int rndNum = rndImage.Next(images.Images.Count);
images.ImageSize = imgLbl.Size;
imgLbl.ImageList = images;
imgLbl.ImageIndex = rndNum;
imgLbl.ImageList.Images.RemoveAt(rndNum);// this is where the exception is being thrown
}
}
}
以下是完整的例外:
類型 'System.ArgumentOutOfRangeException' 的未處理的異常出現在System.Windows.Forms.dll中
其他信息: InvalidArgument ='8'的值對'index'無效。
我有一種感覺,這應該很容易,但我無法弄清楚如何解決這個異常。還有另一件事。顏色都搞砸了,我不知道爲什麼。
原來這裏是:
這裏是搞砸了一個它在應用中展示:
有人可以幫我嗎?
是什麼rndNum和ImageList.Images長度的價值? –
它可以是任何東西,從0到12,當我運行它,它因人而異,所以我創造了 –
隨機它應該是0至11 –