C#使用外部类中的字段(制作秒表)

时间:2016-11-29 00:38:23

标签: c#

我对这个问题感到非常难过。我试图制作一个"秒表"赋值,但是字段(DateTime startTime,DateTime stopTime)和只读字段(ElapsedTime)需要在业务层类上(Timing.cs.BL)业务层还需要有方法StartClock()和StopClock( )。

如果我的UI表单设置了... lblDisplay(对于经过的时间),lstSplits(对于分段时间),btnStart,btnStop,btnReset,btnSplit。

我看过TimeSpan,DateTime和elapsed.Add(TimeSpan.FromSeconds(1));

我的问题是我不知道如何在业务层(Timing.cs.BL)中构建方法ElapsedTime,然后将elapsedTime踢到窗体UI上的lblDisplay。我可以将startClock和stopClock传递给表单,但我不知道如何生成elapsedTime(在BL中),然后将其传递给表单,以便在那里更新。

使用Visual Studio 2015构建它。

提前感谢。

1 个答案:

答案 0 :(得分: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;
}