我正在为纸牌游戏编程。 我使用异步方法和等待Task.Delay()代码来阻止代码继续,以便用户可以看到他犯了错误或成功而不是立即将卡片翻转。 但代码本身就停止了。用户仍然可以按下按钮,它会中断代码。 如何在代码延迟时使按钮无法按下?
private async void Cards(ButtonBase Card1,int Val)
{
Card1.Text = Card1.Name;
count++;
if (count == 2){
val2 = Val;
if (val1 == val2 && PrevCard != Card1)
{
await Task.Delay(2000);
Card1.Enabled = false;
PrevCard.Enabled = false;
Card1.Text = "Correct";
PrevCard.Text = "Correct";
count = 0;
val1 = 0;
val2 = 0;
}
else
{
await Task.Delay(2000);
Card1.Text = "";
PrevCard.Text = "";
count = 0;
val1 = 0;
val2 = 0;
}
PrevCard = null;
}
else
{
val1 = Val;
PrevCard = Card1;
}
}
答案 0 :(得分:0)
一个小deactivateButtons()
方法可以做到:
private void deactivateButtons()
{
foreach(Control c in this.Controls)
{
if(c is Button)
{ c.Enabled = false; }
}
}
在执行代码之前调用此方法,在完成代码后调用另一个方法activateButtons()
应该这样做。我想你可以自己编写第二种方法; - )