一键更改列表中的多张图像

时间:2018-07-09 21:03:26

标签: c# winforms list button picturebox

编程新手。我正在为Windows上的《玫瑰周围的花瓣》游戏开发Windows窗体应用程序,尽管我们的指导老师向我们展示了如何在单击后更改单个图片框,但我想制作一个可以一次更改所有图片框的按钮/ “掷骰子”。

某些代码:

    private void frmDisplay_Load(object sender, EventArgs e)
    {
        // Create list object to hold dice images
        diceArray = new List<MyPictureBox>();

        for (int i = 0; i < 5; i++)
        {
            MyPictureBox picBox = new MyPictureBox(i + 1);
            picBox.Image = RandomDice.GetRandomDice();
            picBox.Click += new System.EventHandler(pictureBox_Click);
            this.Controls.Add(picBox);
            this.Controls.Add(picBox.TheLabel);
        }           
    }

上面的代码在加载表单时会创建5个图片框,并从我的RandomDice类中提取,如下:

class RandomDice
{
    private static Random randomGen = new Random();
    private static Image[] imgList = new Image[6];

    public static Image GetRandomDice()
    {
        int i = 0;
        ResourceSet rsrcSet = Properties.Resources.ResourceManager.GetResourceSet(CultureInfo.CurrentCulture, true, true);
        foreach (DictionaryEntry entry in rsrcSet)
        {
            imgList[i] = (Image) entry.Value;
            i++;
        }
        i = randomGen.Next(0, imgList.Length);
        return imgList[i];
    }
}

我为按钮单击设置了一个事件,但是我不确定如何进行操作,因此按钮可一次更改我所有的骰子图像。

有什么建议吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

您必须遍历数组。然后在for循环中更改图像。

    /// <summary>Update the image list with random dice images.</summary>
    public static void UpdateDices()
    {
        // Iterate through the image array.
        for (var i = 0; i < imgList.Length; i++)
        {
            // Update the dice image.
            imgList[i] = GetRandomDice();
        }
    }