【问题标题】:How to create a stopwatch in c#? [closed]如何在 C# 中创建秒表? [关闭]
【发布时间】:2016-03-30 11:55:22
【问题描述】:

如何在 c# (visual studio 2012) 中创建一个秒表,该秒表在您开始在文本框中输入时开始,在按下回车时停止?当我开始输入另一个单词时它应该再次开始,并在按 Enter 键时再次结束,然后显示为每个单词记录的时间。

以下示例演示如何使用 Stopwatch 类来确定应用程序的执行时间。 C#

using System;
using System.Diagnostics;
using System.Threading;
class Program
{
    static void Main(string[] args)
    {
        Stopwatch stopWatch = new Stopwatch();
        stopWatch.Start();
        Thread.Sleep(10000);
        stopWatch.Stop();
        // Get the elapsed time as a TimeSpan value.
        TimeSpan ts = stopWatch.Elapsed;

        // Format and display the TimeSpan value.
        string elapsedTime = String.Format("{0:00}:{1:00}:{2:00}.{3:00}",
            ts.Hours, ts.Minutes, ts.Seconds,
            ts.Milliseconds / 10);
        Console.WriteLine("RunTime " + elapsedTime);
    }
}

【问题讨论】:

  • 您在哪些具体方面遇到了问题?
  • 那么,基于这个例子,你尝试了什么?你被困在哪里了?
  • 你有什么问题?
  • 你是什么意思的文本框?我假设 Windows 窗体。所以你可能想看看KeyDown 事件(或另一个合适的事件)。 -- 好像你已经知道如何创建/使用秒表,但对其他东西有更多的问题。
  • @roryap 当我按下键盘上的一个键(“输入”除外)时,我使用什么代码使秒表启动,并在我按下 Enter 时停止。然后当我按另一个键时重新开始,并在每次按 Enter 时显示时间。

标签: c# visual-studio-2012 timer stopwatch


【解决方案1】:

您可以覆盖 StopWatch 并使其符合您的意愿,如下所示:

private void Usage()
{
    WordStopWatch wsw = new WordStopWatch();

    // On textchanged?
    wsw.Start();

    // On keypress -> Enter
    wsw.Stop(/*Your control here ala*/ textBoxInput.Something);
}

private class WordStopWatch : Stopwatch
{
    // Temporary save start-time and end-time
    public DateTime StartAt { get; private set; }
    public DateTime EndAt { get; private set; }

    // Save your records
    public List<Tuple<TimeSpan, string>> Records;

    // Override Start() to save StartAt
    public void Start()
    {
        StartAt = DateTime.Now;
        base.Start();
    }

    // Override Stop() to save EndAt and your records.
    public void Stop(string word)
    {
        EndAt = DateTime.Now;
        StartAt = EndAt - base.Elapsed;
        base.Stop();

        Records.Add(new Tuple<TimeSpan, string>(EndAt - StartAt, word));
    }
}

这只是向一个可能的方向推进。稍加努力,你应该能够继续前进。

【讨论】:

    猜你喜欢
    • 2011-09-18
    • 2016-03-28
    • 2015-08-11
    • 2012-07-07
    • 1970-01-01
    • 1970-01-01
    • 2015-09-24
    • 2019-04-07
    • 1970-01-01
    相关资源
    最近更新 更多