首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Imagelist始终返回-1

Imagelist始终返回-1
EN

Stack Overflow用户
提问于 2013-03-14 01:43:10
回答 1查看 140关注 0票数 0

我正在设计一个使用windows窗体的小游戏,其中有5个标签,每个标签都像一个指定图像列表中的骰子(1-6)的图像。游戏被制作成“滚动”3次,在滚动结束时,你可以通过改变标签的背景颜色来选择不滚动的标签。在每个辊的末尾,计算并显示模模面的总和。

现在问题来了..。

我知道我的标签可以到达图像列表,因为骰子的“滚动”功能工作得很好。每个标签被设置为通过一个计时器滴答事件运行,该事件将发生10次,其中从图像列表中选择随机图像,从而产生掷骰子的错觉。但是,当我希望使用imagelist索引将滚动周期结束时的骰面总数相加时,每个索引都返回-1。请注意,每个骰子的索引都比骰子的数量小一。同样,如果你有一个类似于1的骰子,它的索引将为0。我通过在索引中加1来说明这一点。所以..。虽然我的分数可能是5,5,6,4,3 -我的分数计数器是0,而不是23。

当最低可用指数为0时,为什么imgaelist指数会给出-1的值?

这是我的代码。芯片面数的实际计算是在else语句中进行的。在计算总和之前,我将m_iScore (分数计数器)设置为零,因为我希望总和代表每次滚动后的面。

代码语言:javascript
复制
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。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-14 01:47:10

设置Image属性不会更改ImageIndex属性--它们或多或少是完全无关的。

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15392607

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档