0

我试图从用户那里获取一个值,然后每次单击按钮它必须打印语句和代表多次尝试的图片。if 语句正在工作,但它总是显示最后一个案例的图片。

private void button1_Click(object sender, EventArgs e)
{
    if (textBox1.Text != "")
    {    
        int gussednum= Convert.ToInt16( textBox1.Text); 

        for (int i = 0; i < 7; ++i)
        {
                if (interednum < num)
                {
                    label1.Text = "Should be greater than" + num;
                    switch (i)
                    {
                        case (0) :
                            Image image = Image.FromFile("1.png");
                            pictureBox1.Image = image;
                            break;

                        case (1):
                            Image im2 = Image.FromFile("2.png");
                            pictureBox1.Image = im2;
                            break;

                        case (2):
                            Image im3 = Image.FromFile("3.png");
                            pictureBox1.Image = im3;
                            break;

                        case (3):
                            Image image4 = Image.FromFile("4.png");
                            pictureBox1.Image = image4;
                            break;

                        case (4):
                            Image image5 = Image.FromFile("5.png");
                            pictureBox1.Image = image5;
                            break;

                        case (5):
                            Image image6 = Image.FromFile("dead.gif");
                            pictureBox1.Image = image6;
                            break;

                        case (6):
                            Image image7 = Image.FromFile("red.png");
                            pictureBox1.Image = image7;
                            break;
                    }
                }
4

3 回答 3

1

您总是将图像分配给pictureBox1。显然最后一次在循环中执行最后一个 switch/case (#7)

pictureBox1.Image = image5;

因此,您要么在复制/粘贴时输错了 pictureBox1,要么也应该中断一个循环(从您的 switch/case 中断)。

我不确定这是否是 StackOverflow 问题,而只是一些复制/粘贴问题。

于 2013-11-03T20:30:16.713 回答
0

既然你已经用switch/case这个包装了loop

for (int i = 0; i < 7; ++i)

无论何时,以下是true

interednum < num

您将始终拥有i等于,6因为它每次运行都会循环到它。这就是为什么它总是输出最后一个case.

这可能是也可能不是问题,但值得一看。似乎您总是更改同一个对象 ( pictureBox1):

pictureBox1.Image = image7;

您可能有多个pictureBox对象,因此它可能看起来像这样:

pictureBox7.Image = image7;//do this for every pictureBox in every case statement
于 2013-11-03T20:30:43.653 回答
0

它在循环中运行,因此它会插入第一张图像,下一秒,依此类推,直到最后一张。可能它很快就能看到它,这就是为什么你只看到最后一张图片。尝试调试该程序以查看它的真实性。

我的建议:只需将所有 break 的命令更改为 switch case 中的“return”即可。就这样。

附言。在我看来,这段代码没有意义(我说的是 for 循环中的 switch case ;))。

于 2013-11-03T20:41:48.243 回答