0

我需要帮助阻止这个循环不断循环,我需要它给用户时间以它打开的新形式选择一些东西,但目前它只是打开它们的全部负载并且不会停止。

while (Convert.ToInt32(PlayerHP[PlayerNo]) > 0 && Convert.ToInt32(PlayerHP[PlayerNo+1]) > 0){
    ChooseAttack();
    PlayerHP[PlayerNo+1] = (Convert.ToInt32(PlayerHP[PlayerNo+1]) - Damage()).ToString();
    lblHPP1.Text = PlayerHP[0];
    lblHPP2.Text = PlayerHP[1];
    PlayerNo = ((PlayerNo+1)%2);
    Application.DoEvents();
}

我一直在试验“Application.DoEvents()”行,但无论我把它放在哪里,它都没有做任何事情。

4

2 回答 2

2

我在任何地方都看不到表单,但希望在该ChooseAttack();调用中的某个地方您有一些看起来像这样的代码:

frmChoose.Show();

您需要做的就是将其更改为:

frmChoose.ShowDialog();
于 2013-06-19T21:00:50.557 回答
0

我会将循环推送到计时器线程上,以便您可以从外部控制“循环”。循环运行的速度将是计时器的超时时间。

为了更清楚起见,您将不再有“while”语句,更多的是在计时器的回调方法顶部使用 if 来检查您的条件。它的实际循环部分将由计时器一遍又一遍地执行。

根据您选择的计时器,当您单击表单上的按钮时,您只需说 Timer.Enabled = false; 或类似的东西。

于 2013-06-19T21:05:28.623 回答