2014-02-07 49 views
0
public void globalPb_MouseDown(object sender, MouseEventArgs e) 
     { 
      if (e.Button == MouseButtons.Middle) 
      { 
       if (pause == false) 
       { 
        for (int i = 0; i < pbs.Length; i++) 
        { 
         pbs[i].PauseAnimate(); 
         pause = true; 
        } 
       } 
       if (pause == true) 
       { 
        for (int i = 0; i < pbs.Length; i++) 
        { 
         pbs[i].ContinueAnimate(); 
        } 
        pause = false; 
       } 

      } 
     } 

我想,如果变量暂停为false,那么暂停,如果它的真实然后继续。 但在IF检查,如果它的假,我把它设置为真,所以下一步检查它的真实性,所以它永远不会暂停。我如何检查布尔是假的还是真的,然后做点什么?

我应该怎么做检查的逻辑?

+1

你可以只用'其他if',而不是'if'。 –

+1

当涉及到一个普通的旧布尔值时,可以使用'else'而不是'else if'。 – 48klocs

+0

如果你想暂停,当'暂停'为假,并且当'暂停'为真时,你可以考虑将它重命名为'active'或'animating',甚至是'unpaused'。 – mao47

回答

5

尝试使用声明的else部分:

if (!pause) { 
    for (int i = 0; i < pbs.Length; i++) { 
    pbs[i].PauseAnimate(); 
    } 
    pause = true; 
} else { 
    for (int i = 0; i < pbs.Length; i++) { 
    pbs[i].ContinueAnimate(); 
    } 
    pause = false; 
} 

为了进一步清理,我可能会先写一部分真:

for (int i = 0; i < pbs.Length; ++i) { 
    if (paused) { 
    pbs[i].ContinueAnimate(); 
    } else { 
    pbs[i].PauseAnimate(); 
    } 
} 
pause = !pause; 
+0

如果满足“if”,它将不执行'else'。 –

+0

呃,这是正确的我想念。 –

+1

因为'if(pause)'比'if(!pause)'更容易阅读,所以我会交换'if'和'else'。 –

4

你不需要if (pause == false),你可以做if (!pause),你也可以做if ... else ...,所以你现在得到:

if (pause) 
{ 
    for (int i = 0; i < pbs.Length; i++) 
    { 
    pbs[i].ContinueAnimate(); 
    } 
    pause = false; 
} 
else 
{ 
    for (int i = 0; i < pbs.Length; i++) 
    { 
    pbs[i].PauseAnimate(); 
    }  
    pause = true; 
} 

请注意,我重新安排它做if (pause) ... else ...,这比if (!pause) ... else ...更直观。我也重新安排你的for循环稍微使他们看起来是一样的 - 这甚至可能导致你到一个完全重构的解决方案:

public void globalPb_MouseDown(object sender, MouseEventArgs e) 
{ 
    if (e.Button == MouseButtons.Middle) 
    { 
    for (int i = 0; i < pbs.Length; i++) 
    { 
     AnimatePauseOrContinue(pause, pbs[i]); 
    } 
    pause = !pause; 
    } 
} 
public void AnimatePauseOrContinue(bool shouldPause, pbType pb) 
{ 
    if (shouldPause) 
    pb.PauseAnimate(); 
    else 
    pb.ContinueAnimate(); 
} 
相关问题