【问题标题】:How do I work with the system clock / time in xamarin forms?如何以 xamarin 形式使用系统时钟/时间?
【发布时间】:2018-11-15 09:36:05
【问题描述】:

对于一个学校项目,我正在制作一个应用程序。该应用程序应该跟踪您花在特定事情上的时间。例如,当我要开始工作班次时,我会按下一个(开始)按钮,这样计时器就会启动并计算我已经工作了多少,直到我按下一个停止按钮。

我已经准备好带有所有按钮和标签的 xaml。

我的主要问题是计时器。我想在我的开始按钮下面放一个秒表,显示经过的时间。我一直在 github、stackoverflow、google 和 youtube 上寻找很多小时,但没有找到解决方案。

如果实现秒表不容易/不可能,我至少需要应用程序检查单击开始和停止按钮时的系统时间,以计算时间差。

到目前为止,我还无法使任何这些功能正常工作。 提前致谢! - MagSky

【问题讨论】:

    标签: android forms xamarin time clock


    【解决方案1】:

    .NET 有一个内置的Stopwatch 类,你可以使用

    Stopwatch stopWatch = new Stopwatch();
    stopWatch.Start();
    
    // do some work here
    
    stopWatch.Stop();
    // Get the elapsed time as a TimeSpan value.
    TimeSpan ts = stopWatch.Elapsed;
    

    要在 UI 中显示计时器,请改用 System.Timers.Timer

    int secs = 0;
    // fire an event every 1000 ms
    Timer timer = new Timer(1000);
    // when event fires, update Label
    timer.Elapsed += (sender, e) => { secs++; myLabel.Text = $"{secs} seconds"; };
    // start the timer
    timer.Start();
    

    【讨论】:

    • 感谢您的回答!这似乎有效,因为没有发生错误。对于其他想要使用计时器类的人:确保包含“使用 System.Diagnostics;”到使用秒表类的类。您有什么建议如何每秒更新“经过时间标签”,以便不断显示经过时间?至少我可以看到按下停止按钮后经过的时间,所以我们在正确的轨道上。
    • 看我的第二个例子
    • 我无法让它工作。如果我将确切的代码放在我的 startButton 方法 (sender, e) 中,则会出现错误:无法在此范围内声明名为“sender”的本地或参数,因为该名称在封闭的本地范围中用于定义本地或参数 |并且:不能在此范围内声明名为“e”的本地或参数,因为该名称在封闭的本地范围中用于定义本地或参数 |当我将它粘贴到一个全新的按钮和标签中时,应用程序在点击时崩溃
    • a,该错误告诉您在同一范围内重用变量名。只是使用不同的名称。 b、如果要在点击事件处理程序中启动定时器,只需要在处理程序中启动Start(),其余的应该在类级别声明
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-06
    • 2014-05-07
    • 1970-01-01
    相关资源
    最近更新 更多