2016-07-19 7 views
-2

Ich benutze Visual Studio Community 2015, um ein formularbasiertes Programm zu erstellen, das zwei Würfel würfelt. Ich muss das Bild abhängig von der Zufallszahl ändern, die ich bekomme.Generiere Methodenaufrufe C# mit einer Schleife

Die Art, wie ich dies tun kann, ist:

Random num = new Random(); 
int dice = num.Next(1,7); 

if (dice == 1)  { 
    pictureBox.Image = proj08.Properties.Resources._1; 
} else if (dice == 2) { 
    pictureBox.Image = proj08.Properties.Resources._2; 
} else if (dice == 3) { 
    pictureBox.Image = proj08.Properties.Resources._3; 
} else if (dice == 4) { 
    pictureBox.Image = proj08.Properties.Resources._4; 
} else if (dice == 5) { 
    pictureBox.Image = proj08.Properties.Resources._5; 
} else if (dice == 6) { 
    pictureBox.Image = proj08.Properties.Resources._6; } 

Das funktioniert perfekt und macht das, was ich will, aber es ist sehr unordentlich Code. Ich möchte es aufräumen, indem Sie so etwas wie tun:

Random num = new Random(); 
int dice = num.Next(1,7); 
pictureBox.Image = proj08.Properties.Resources._dice; 

aber das funktioniert nicht. Ich würde auch gerne den gleichen Code verwenden, auch wenn die PictureBox PictureBox1 oder PictureBox2 ist, so dass ich es für jeden der Würfel verwenden kann.

+0

Bei dieser Frage geht es mehr um Ressourcen als um Würfel. Zumindest markiere Duplikate von etwas passenderem: http://stackoverflow.com/questions/1190729/vb-net-dynamically-select-image-from-my-resources – Crowcoder

Antwort

0

Sie können eine Liste der Bilder haben:

List<Image> images = new List<Image>() 
{ 
    proj08.Properties.Resources._1, 
    proj08.Properties.Resources._2, 
    proj08.Properties.Resources._3, 
    proj08.Properties.Resources._4, 
    proj08.Properties.Resources._5, 
    proj08.Properties.Resources._6 
}; 

Random num = new Random(); 
int dice = num.Next(1, images.Count + 1); 
pictureBox.Image = images[dice - 1]; // list starts from 0 

Dies ist die straight-forward elegante Weise, die ich denken kann.

Für mehrere Bildfelder können Sie eine Methode erstellen, die das Bildfeld als Argument übergibt und seine Bildeigenschaft darin einstellt.