C#中的这个switch语句出了什么问题?

时间:2013-11-03 20:22:51

标签: c# asp.net

我试图从用户那里获取一个值,然后每次点击按钮就必须打印语句和代表一些尝试的图片。 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;
                    }
                }

3 个答案:

答案 0 :(得分:1)

您始终将图像分配给pictureBox1。显然,最后一次在循环中执行最后一个开关/情况(#7)

pictureBox1.Image = image5;

所以,你要么在复制/粘贴时输入错误的pictureBox1,要么你也应该打破一个循环(从你的开关/案例中断)。

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

答案 1 :(得分: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

答案 2 :(得分:0)

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

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

聚苯乙烯。这个代码在我看来没有意义(我说for循环中的switch case;)。)。