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