2013-11-03 48 views
0

我想從用戶獲取一個值,然後每次點擊按鈕時它必須打印語句和表示嘗試次數的圖片。 if語句正在工作,但它總是顯示最後一個案例的圖片。C#中的這個switch語句有什麼問題?

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; 
        } 
       } 
+2

什麼'interednum'和'num'是?你可以提供代碼,你分配他們? –

+2

這是一個非常嚴重的濫用switch語句。 interednum和num定義在哪裏? – JJJ

+0

我將num分配給隨機數 static Random R = new Random(); int num = R.Next(100); –

回答

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 
+0

我想每次單擊btn時都會更改同一對象的圖像。 –

+0

我刪除了foor,而我用它的時候...它的工作非常感謝:D –

+0

沒問題。 | = ^]如果您覺得這是一個好的/正確的答案,那麼upvote或複選標記就會很好。 –

1

您總是分配一個圖片到pictureBox1。很顯然最後一次是在循環的最後開關/情況下,執行(#7)

pictureBox1.Image = image5; 

所以,你要麼輸入錯誤的複製/粘貼pictureBox1,或者你應該打破循環,以及(從交換機/案例中斷)。

我不確定這是甚至StackOverflow的問題,但只是一些複製/粘貼問題。

0

它在循環運行,因此它的插入第一張圖片,下一張等等,直到最後一張。可能是快速看到它,這就是爲什麼你只看到最後一張圖片。嘗試調試該程序,看看它是真的。

我的建議是:只需在開關盒中更改所有break的命令以「return」。就這樣。

Ps。這個代碼在我看來沒有意義(我在for循環中談論switch case;))。

+0

是的,我知道了我不需要循環:D 我用了一段時間(使用全局變量i)每增加一次uset按下按鈕 –

+0

非常感謝;) –