我是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();
}
答案 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;
}