想要一个按钮在点击后禁用30秒,并自动启用它
我在一个项目上,这个项目需要从random.org随机抽取16个字节。我可以从网站上取得这个16字节的文本。我也有一个刷新按钮。每次点击这个按钮,新的16字节出现,并且它被写入textedit。想要一个按钮在点击后禁用30秒,并自动启用它
我想阻止用户按顺序点击刷新按钮。我想要的是在点击后禁用刷新按钮。但是,我想要的另一件事是自动启用此按钮30秒后。
我试过thread.sleep(30000)
在按钮点击事件,但它停止整个程序30秒。我想在30秒内禁用刷新按钮,而不是其他程序。
我想向用户展示一种秒表,以便他们可以看到他们应该等待下一次点击多少时间。例如,点击刷新按钮后,出现这个30秒秒表。
尝试这样:
System.Windows.Forms.Timer timer = new System.Windows.Forms.Timer();
private void button1_Click(object sender, EventArgs e) // event handler of your button
{
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();
}
谢谢,这正是我想要的。 –
System.Windows.Forms.Timer timer1 = new System.Windows.Forms.Timer();
timer1.Interval=1000;//one second
timer1.Tick += new System.EventHandler(timer1_Tick);
timer1.Start();
int count=30;
private void timer1_Tick(object sender, EventArgs e)
{
if(count!=0)
{
button1.Enabled=false;
label1.Text = count.ToString() +" seconds more to Enable Refresh Button";
count--;
}
else
{
button1.Enabled=true;
timer1.Stop();
}
}
使用定时器 有一个片段创建计时器 http://dotnet-snippets.de/snippet/timer-anlegen/111
在上点击按钮关闭按钮,并开始计时。在Tick中启用按钮并停止计时器。
如果我们在这里所说的WPF,有一种方法可以实现与EventTriggers所期望的行为,没有任何后台代码:
<Style TargetType="Button">
<Style.Triggers>
<EventTrigger RoutedEvent="Button.Click">
<EventTrigger.Actions>
<BeginStoryboard>
<Storyboard>
<BooleanAnimationUsingKeyFrames Storyboard.TargetProperty="IsEnabled">
<DiscreteBooleanKeyFrame KeyTime="00:00:00" Value="False" />
<DiscreteBooleanKeyFrame KeyTime="00:00:30" Value="True" />
</BooleanAnimationUsingKeyFrames>
</Storyboard>
</BeginStoryboard>
</EventTrigger.Actions>
</EventTrigger>
</Style.Triggers>
</Style>
不错的优雅解决方案,没有代码隐藏。完善。 – Webreaper
尝试使用定时器控制 – Jade
您可以开始研究[Thread](http://msdn.microsoft.com/zh-cn/library/aa645740(v = vs.71).aspx),man。 – albusshin
计时器或BackgroundWorker – Paparazzi