2016-03-30 46 views
-4

テキストボックスに入力を開始し、入力時に停止すると開始するC#(Visual Studio 2012)でストップウォッチを作成するにはどうすればよいですか?私は別の単語を入力してEnterを押すともう一度やり直す必要があります。そして、単語ごとに記録された時間を表示してください。Cでストップウォッチを作成するには?

次の例は、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); 
    } 
} 
+2

問題の具体的な側面は何ですか? –

+0

この例に基づいて、何を試しましたか?あなたはどこにいるのですか? – David

+0

あなたは何を持っていますか? – Guy

答えて

0

あなたはStopWatchをオーバーライドして、それはこのようなあなたのwhishesを適合させることができます:

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

これは一つの可能​​な方向に押すだけです。ちょっとした努力であなたは続けることができるはずです。

関連する問題