2013-12-21 74 views
4

我在一個項目上,這個項目需要從random.org隨機抽取16個字節。我可以從網站上取得這個16字節的文本。我也有一個刷新按鈕。每次點擊這個按鈕,新的16字節出現,並且它被寫入textedit。想要一個按鈕在點擊後禁用30秒,並自動啓用它

我想阻止用戶按順序點擊刷新按鈕。我想要的是在點擊後禁用刷新按鈕。但是,我想要的另一件事是自動啓用此按鈕30秒後。

我試過thread.sleep(30000)在按鈕點擊事件,但它停止整個程序30秒。我想在30秒內禁用刷新按鈕,而不是其他程序。

我想向用戶展示一種秒錶,以便他們可以看到他們應該等待下一次點擊多少時間。例如,點擊刷新按鈕後,出現這個30秒秒錶。

+0

嘗試使用定時器控制 – Jade

+1

您可以開始研究[Thread](http://msdn.microsoft.com/zh-cn/library/aa645740(v = vs.71).aspx),man。 – albusshin

+0

計時器或BackgroundWorker – Paparazzi

回答

5

嘗試這樣:

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(); 
} 
+0

謝謝,這正是我想要的。 –

0
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(); 
    } 

} 
10

如果我們在這裏所說的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> 
+1

不錯的優雅解決方案,沒有代碼隱藏。完善。 – Webreaper

相關問題