2016-11-29 27 views
0

我非常難以理解這個問題。我試圖創建一個「秒錶」分配,但是字段(DateTime startTime,DateTime stopTime)和只讀字段(ElapsedTime)需要位於業務層類(Timing.cs.BL)上。業務層也需要有方法StartClock()和StopClock()。C#使用外部類中的字段(製作秒錶)

如果我的UI窗體設置... lblDisplay(用於流逝的時間),lstSplits(用於分割時間),btnStart,btnStop,btnReset,btnSplit。我已經看過TimeSpan,DateTime和elapsed.Add(TimeSpan.FromSeconds(1));我已經看到了TimeSpan,DateTime和elapsed.Add(TimeSpan.FromSeconds(1));

我的問題是我不知道如何在業務層(Timing.cs.BL)中構建方法ElapsedTime,然後將表單UI上的lblDisplay踢到elapsedTime。我可以將startClock和stopClock傳遞給表單,但我不知道如何生成elapsedTime(在BL中),然後將它傳遞給表單,以便在那裏更新。

使用Visual Studio 2015構建它。

在此先感謝。

+1

也許你應該只是複製/粘貼你的整個家庭作業,它可能比這個不連貫的寶石更容易理解。 –

回答

1

公開和消耗。

在業務層,您需要公開您想要的值,例如,

class MyBusinessLayerClass 
{ 
    private StopWatch _stopWatch; 
    public TimeSpan ElapsedTime 
    { 
     get { return _stopWatch.Elapsed; } 
    } 
} 

然後消耗在UI層的值,以某種方式。也許您希望每秒更新一次所用時間,因此請在表單中添加一個計時器並捕獲Tick事件。

private void OnLoad(EventArgs e) 
{ 
    myTimer.Tick += new EventHandler(TimerEventProcessor); 
} 

private static void TimerEventProcessor(Object myObject, EventArgs myEventArgs) 
{ 
    MyBusinessObject o = GetMyBusinessObject(); 
    TimeSpan ts = o.ElapsedTime; 
    string elapsedTime = String.Format("{0:00}:{1:00}:{2:00}.{3:00}", ts.Hours, ts.Minutes, ts.Seconds, ts.Milliseconds/10); 
    this.lblTimeElapsed.Text = elapsedTime; 
} 
+0

非常感謝你。 –