如何使表单中的所有按钮无法压缩?

时间:2015-08-29 14:23:52

标签: c# windows forms

我正在为纸牌游戏编程。 我使用异步方法和等待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;
        }                  
    }

1 个答案:

答案 0 :(得分:0)

一个小deactivateButtons()方法可以做到:

        private void deactivateButtons()
        {
            foreach(Control c in this.Controls)
            {
                if(c is Button)
                { c.Enabled = false; }
            }
        }

在执行代码之前调用此方法,在完成代码后调用另一个方法activateButtons()应该这样做。我想你可以自己编写第二种方法; - )