2016-10-04 51 views
-4

我正在做一個食物訂購桌面應用程序,所以我想計算訂購食物和提供食物之間的時間,所以我給應用程序添加了計時器,並開始和結束按鈕,開始我開始時間和把它的間隔值,做一個可變的計數器,計數並將其值保存在數據庫的結束按鈕上,我想要做的就是在新訂單上動態地啓動一個新的計時器,並在結束一個訂單時停止其計時器將定時器與變量連接起來

我試過插入3個定時器,並創建變量c1,c2,c3,並在每個定單上啓動定時器,如果間隔!= null,但我不知道如何在結束定單時停止特定的定時器

代碼:

int c1=0; 
    int c2=0; 
    int c3=0; 
    private void button_start_Click(object sender, EventArgs e) 
    { 
     if (timer1.Interval == null) 
     { 
      timer1.Start(); 
      timer1.Interval = 1000; 
     } 
     else if (timer2.Interval == null) 
     { 
      timer2.Start(); 
      timer2.Interval = 1000; 
     } 
     else if (timer3.Interval == null) 
     { 
      timer3.Start(); 
      timer3.Interval = 1000; 
     } 


    } 
+1

似乎你不知道'System.Diagnostics.Stopwatch' –

+0

我試過秒錶,但我不知道如何鏈接它與停止變種 –

+0

而我們不知道你已經嘗試....你不覺得你應該發佈你的代碼,並問你卡在哪裏? –

回答

0

那麼,因爲你沒有向我們展示任何代碼,讓我假設你至少有一個類來封裝順序。

public class Order 
{ 
    public int OrderNumber{get;set;} 

    ///other properties 
} 

現在如果您添加以下兩個屬性和方法,您的問題已得到解決。

public class Order 
{ 
    public int OrderNumber{get;set;} 

    //other properties 

    public DateTime OrderPlacedOn{get;set;} 
    public DateTime OrderCompletedOn{get;set;} 

    public TimeSpan TimeToComplete() 
    { 
     if(OrderCompletedOn==DateTime.MinValue)//order not completed yet 
      return TimeSpan.FromSeconds(0); 

     return OrderCompletedOn - OrderPlacedOn; 
    } 
} 

這可以讓您免去無數定時器的束縛。您可以在點擊按鈕時設置開始和完成值。

+0

謝謝,但我希望用戶在屏幕上看到秒錶或計時器的值,以查看訂單時間 –

+0

不知道如何建立您的用戶界面。但是你可以有一個組件(控制)來顯示運行時間,並在點擊按鈕時停止它。這樣你就可以將'Timer'封裝在控件中,你不必處理它們中的10-20個。控制中有類似「StartTimer」和「StopTimer」的方法。在下訂單時,您可以創建一個控件並在UI中顯示並調用「StartTimer」。每秒更新一次顯示。 – TheVillageIdiot