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;
}
}
}
我希望如果变量pause为false则暂停,如果为true,则继续。 但是在检查它是否为假的IF中我将其设置为true,然后检查它是否为真,以便它永远不会暂停。
我应该怎么做检查的逻辑?
答案 0 :(得分: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;
答案 1 :(得分: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();
}