2016-05-09 30 views
0

我試圖讓這個程序使用Windows窗體計時器,只有在條件滿足後才顯示消息框,這些條件是if (test != null && done == false)遇見然後一個消息框將顯示與每日消息。然後done的布爾值將被設置爲false,這是假設阻止消息箱再次運行。但是,messagebox一直在顯示。這裏是我的代碼..如果條件滿足,如何在計時器的刻度上運行命令

public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
     } 

     String test = null; 
     bool done = false; 
     private void Form1_Load(object sender, EventArgs e) 
     { 
      timer1.Enabled = true; 
     } 


     private void timer1_Tick(object sender, EventArgs e) 
     { 
      test = "Good to see you"; 
      if (test != null && done == false) 
      { 
       MessageBox.Show(test); 

      } 
      done = true; 
     } 
    } 

基本上我只希望一次顯示的消息框,然後停下來,我想布爾會做到這一點的最好辦法。有沒有其他方法?請開始我的憐憫。

+0

你的計時器是否需要繼續打勾?如果不是,那麼你可以將其Enabled屬性設置爲false,以便它停止在該條件上。或者,如果您需要繼續滴答滴答,但只能首次執行某些操作,那麼我會使用布爾值並在完成後將其設置爲true,因爲您已將其編碼在上面。 – ManoDestra

+0

Windows.Forms.TImers過去有許多問題和錯誤使用模式。我相信他們在最近的幾個版本中已經得到了一定程度的修正,但要小心。 – StingyJack

+0

你也不需要那裏的空檢查。您在檢查之前設置了字符串。你應該在if結構中設置true。請記住,在顯示消息框後,您的計時器仍在滴答滴答,因此您需要在if結構PRIOR中將done設置爲true來顯示消息框。在用戶界面做任何事情之前總是改變狀態。並將'done == false'更改爲'!done'。 – ManoDestra

回答

2

done=true;移至您顯示MessageBox之前。