我需要帮助阻止这个循环不断循环,我需要它让用户有时间选择它打开的新形式的东西,但目前只是打开它们的整个负载并且不会停止。
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()”行,但无论我把它放在什么都没做。
答案 0 :(得分:2)
我没有在任何地方看到任何表单,但希望在ChooseAttack();
调用的某个地方你有一些看起来像这样的代码:
frmChoose.Show();
您需要做的就是将其更改为:
frmChoose.ShowDialog();
答案 1 :(得分:0)
我会将循环推送到计时器线程,以便您可以在外部控制“循环”。循环运行的速度将是计时器的超时时间。
为了更清晰,你将不再有'while'语句,更多的是在计时器的回调方法的顶部检查你的条件。它的实际循环部分将由反复执行的定时器来处理。
根据您选择的计时器,当您单击表单上的按钮时,您只需说Timer.Enabled = false;或类似的东西。