2013-11-03 4 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을 임의의 숫자로 지정 정적 Random R = 새로운 Random(); int num = R.Next (100); –

답변

0

:

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

때마다 다음 true : 그것은에 루프 때문에

interednum < num 

당신은 항상 6 동일 i을해야합니다 그것마다 달린다. 이것이 항상 마지막으로 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 질문 일뿐 아니라 일부 복사/붙여 넣기 문제인지 확실하지 않습니다. 당신이 loop이 함께 switch/case을 포장 한 이후

0

첫 번째 이미지, 다음 두 번째 등등 마지막까지. 가능한 빨리보기 만하면 마지막 이미지 만 보입니다. 해당 프로그램을 디버그하여 사실인지 확인하십시오.

제 조언 : 스위치 케이스에서 "return"에 대한 모든 중단 명령을 변경하십시오. 그게 다야.

ps. 이 코드는 내 생각에 감각이 없습니다 (for 루프의 switch case에 대해 말하고 있습니다)).

+0

그래, 내가 그것을 루프에 대한 필요가 없습니다 : D 나는 (전역 var 내가)와 함께 사용 uset 버튼을 누를 때마다 증가 –

+0

대단히 감사합니다;) –

관련 문제