2016-03-30 42 views
-4

Wie erstelle ich eine Stoppuhr in C# (visual studio 2012), die beim Eintippen eines Textfelds beginnt und beim Drücken von enter stoppt? Es sollte wieder beginnen, wenn ich anfange, ein anderes Wort einzugeben, und beim Drücken der Eingabetaste wieder zu Ende gehen und dann die Zeiten anzeigen, die für jedes Wort aufgezeichnet wurden.Wie erstelle ich eine Stoppuhr in C#?

Das folgende Beispiel veranschaulicht, wie die Stoppuhrklasse verwendet wird, um die Ausführungszeit für eine Anwendung zu bestimmen. 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); 
    } 
} 
+2

Mit welchem ​​spezifischen Aspekt haben Sie Probleme? –

+0

Also, basierend auf diesem Beispiel, was hast du probiert? Wo steckst du fest? – David

+0

Was stimmt nicht mit dem was du hast? – Guy

Antwort

0

Sie konnten die StopWatch außer Kraft setzen und es so passen Ihre Wünsche machen:

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)); 
    } 
} 

Dies in einer möglichen Richtung nur ein Push ist. Mit ein bisschen Aufwand sollten Sie weitermachen können.