C# Imagelist始终返回-1

C# Imagelist始终返回-1,c#,imagelist,C#,Imagelist,我正在使用windows窗体设计一个小游戏,其中有5个标签,每个标签都类似于指定图像列表中骰子1-6的图像。游戏将被滚动3次,在滚动结束时,您可以通过更改标签的背景颜色来选择不滚动的标签。在每卷结束时,计算并显示模具表面的总和 现在来看问题 我知道我的标签可以到达imagelist,因为骰子的滚动功能非常有效。每个标签设置为通过计时器滴答事件运行,该事件将发生10次,其中从imagelist中选择随机图像,从而产生掷骰子的错觉。但是,当我希望使用imagelist索引在滚动周期结束时添加模具面总

我正在使用windows窗体设计一个小游戏,其中有5个标签,每个标签都类似于指定图像列表中骰子1-6的图像。游戏将被滚动3次,在滚动结束时,您可以通过更改标签的背景颜色来选择不滚动的标签。在每卷结束时,计算并显示模具表面的总和

现在来看问题

我知道我的标签可以到达imagelist,因为骰子的滚动功能非常有效。每个标签设置为通过计时器滴答事件运行,该事件将发生10次,其中从imagelist中选择随机图像,从而产生掷骰子的错觉。但是,当我希望使用imagelist索引在滚动周期结束时添加模具面总数时,每个索引返回-1。请注意,每个模具的索引比模具数量少一个。同样地,如果你有一个类似于1的骰子,它的索引将是零。我通过在索引中添加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.Text将显示-5。

设置图像属性不会更改ImageIndex属性-它们或多或少完全无关

通常,UI应该显示程序状态,而不是保持它。完成所有计算,然后将计算结果推送到UI中;不要把UI元素当作变量来使用