禁用按钮30秒并显示倒计时

时间:2017-05-31 05:38:54

标签: c#

我是C#的新人

我希望在点击它后再禁用按钮30秒,然后重新启用它。

我找到了以下代码,但没有实时倒计时。

我想显示从30到0的倒计时,但我无法做到。我不能发表评论,因为我是SO的新手,我需要至少50个声誉。

System.Windows.Forms.Timer timer = new System.Windows.Forms.Timer();
// event handler of your button

private void button1_Click(object sender, EventArgs e)  
{                
    timer.Interval = 30000; // here time in milliseconds
    timer.Tick += timer_Tick;
    timer.Start();
    button1.Enabled = false;

    // place get random code here
}

void timer_Tick(object sender, System.EventArgs e)
{
    button1.Enabled = true;
    timer.Stop();
}

2 个答案:

答案 0 :(得分:1)

我添加了一个倒计时变量,并将间隔设为1秒。在tick方法中,我们递减倒计时直到我们达到0,然后我们重新启用按钮。如果倒计时> 0,我们将剩余的秒输出到输出窗口(我不知道你想如何使用这个值)。

System.Windows.Forms.Timer timer = new System.Windows.Forms.Timer();
int countdown = 30;
// event handler of your button

private void button1_Click(object sender, EventArgs e)
{
    countdown = 30; // number of seconds
    timer.Interval = 1000; // one second
    timer.Tick += timer_Tick;
    timer.Start();
    button1.Enabled = false;

    // place get random code here
}

void timer_Tick(object sender, System.EventArgs e)
{
    if (--countdown <= 0)
    {
        button1.Enabled = true;
        timer.Stop();
        timer.Tick -= timer_Tick;
    }
    else
    {
        System.Diagnostics.Debug.WriteLine(string.Format("Remaining: {0}s", countdown));
    }
}

答案 1 :(得分:0)

实现上述问题的最简单方法之一。

async void disableButton()
{
            btn.IsEnabled = false;
            await Task.Delay(TimeSpan.FromSeconds(30));
            btn.IsEnabled = true;
}