Imagelist总是返回-1

本文关键字:返回 Imagelist | 更新日期: 2023-09-27 18:03:49

我正在设计一个使用windows窗体的小游戏,其中有5个标签,每个标签类似于来自指定图像列表的骰子图像(1 - 6)。这个游戏需要"滚动"3次,在滚动结束时,你可以通过改变标签的背景颜色来选择不滚动的标签。在每次滚动结束时,计算并显示骰子面总数。

现在问题来了…

我知道我的标签可以到达图像列表,因为骰子的"滚动"功能非常好。每个标签都设置为通过一个计时器滴答事件运行,该事件将发生10次,其中从图像列表中选择随机图像,从而产生滚动骰子的错觉。但是,当我希望使用imagelist索引在滚动循环结束时添加模具面总数时,每个索引返回-1。请注意,每个骰子的指数都比骰子的数量少1。同样地,如果你有一个类似于1的骰子,它的索引将是0。我通过在索引上加1来解释这种情况。所以…虽然我可能有5、5、6、4、3,但我的分数计数器的结果是0,而不是23。

为什么当最低可用索引为0时,imgaelist索引给出的值为-1 ?

这是我的代码。骰子面总数的实际计算在else语句中进行。在计算总和之前,我将m_iScore(分数计数器)设置为零,因为我希望总和代表每次滚动后的面孔。
private void timer1_Tick(object sender, EventArgs e)
        {
            Label[] labelArray = new Label[] { label1, label2, label3, label4, label5 };
            Random randnum = new Random();
            if (m_iAnimations < 10)
            {
                for (int iCount = 0; iCount < labelArray.Length; iCount++)
                {
                    if ((labelArray[iCount]).BackColor == Color.Lime)
                    {
                        (labelArray[iCount]).Image = imageList1.Images[randnum.Next(0, 6)];
                    }
                }
                m_iAnimations++;
            }
            else
            {
                timer1.Enabled = false;
                m_iAnimations = 0;
                m_iScore = 0;
                for (int iCount = 0; iCount < labelArray.Length; iCount++)
                {
                    m_iScore = m_iScore + ((labelArray[iCount]).ImageIndex + 1);
                }
                scoreval.Text = m_iScore.ToString();
            }
        }

如果我不给图像索引加1,scoreval。

Imagelist总是返回-1

设置Image属性不会改变ImageIndex属性——它们或多或少是完全不相关的。

一般来说,UI应该显示程序状态,而不是保持状态。完成所有的计算,然后将计算结果推入UI;不要把UI元素当成变量来使用