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