Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#中的switch语句有什么问题?_C#_Asp.net - Fatal编程技术网

C#中的switch语句有什么问题?

C#中的switch语句有什么问题?,c#,asp.net,C#,Asp.net,我试图从一个用户那里获取一个值,然后每次点击按钮,它都必须打印一条语句和一张代表尝试次数的图片。if语句正在工作,但它始终显示最后一个案例的pic private void button1_Click(object sender, EventArgs e) { if (textBox1.Text != "") { int gussednum= Convert.ToInt16( textBox1.Text); for (int i = 0

我试图从一个用户那里获取一个值,然后每次点击按钮,它都必须打印一条语句和一张代表尝试次数的图片。if语句正在工作,但它始终显示最后一个案例的pic

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;
                    }
                }
private void按钮1\u单击(对象发送者,事件参数e)
{
如果(textBox1.Text!=“”)
{    
int gussednum=Convert.ToInt16(textBox1.Text);
对于(int i=0;i<7;++i)
{
if(interednum
您总是将图像分配给pictureBox1。显然,在循环中最后一次执行开关/案例时(#7)

因此,您要么在复制/粘贴时输入了pictureBox1,要么也应该中断一个循环(从开关/案例中断)


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

因为您已经用for
循环将
开关/case
包装好了:

for (int i = 0; i < 7; ++i)
您将始终使
i
等于
6
,因为每次运行时它都会循环到它。这就是为什么它总是输出最后一个
案例的原因

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

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

pictureBox7.Image = image7;//do this for every pictureBox in every case statement

它是在循环中运行的,所以它是插入第一个图像,下一个图像,等等,直到最后一个。看到它可能很快,这就是为什么你只看到最后一个图像。试着调试该程序,看看它是真的

我的建议是:只需在开关箱中更改所有break的“return”命令即可


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

什么是
interednum
num
呢?你能提供分配给它们的代码吗?这是对switch语句的严重误用。
interednum
num
定义在哪里?我给num分配了一个随机数static random R=new random();int num=R.Next(100);我从文本框中获取interednum!是的,我得到了它,我不需要循环:D我使用了一段时间(使用全局变量I),每次按下按钮时它都会增加。I移除foor,我使用了while…它非常有效谢谢你:没有问题。|=^]如果你觉得这是一个好的/正确的答案,请投赞成票或打勾。
interednum < num
pictureBox1.Image = image7;
pictureBox7.Image = image7;//do this for every pictureBox in every case statement