2016-09-17 9 views
0

でストップウォッチを作るために、私はちょうど私が私が試したのC#でストップウォッチを作ることができればということをお願いしたいと思います:どのようにC#

 private void button2_Click(object sender, EventArgs e) 
    { 
     timer1.Start(); 
    } 

    private void timer1_Tick(object sender, EventArgs e) 
    { 
     int st = 00; 
     int m = 00; 

     string stime = "00:00"; 
     if(st == 60) 
     { 
      m++; 
      st = 00; 
     } 
     else 
     { 
      st++; 
     } 
     if (m == 60) 
     { 
      m = 00; 
     } 
     if(st < 10) 
     { 
      st = 0 + st; 
     } 
     if(m < 10) 
     { 
      m = 0 + m; 
     } 
     stime = m.ToString() + ":" + st.ToString(); 
     label3.Text = stime; 
    } 

このしかし、それは働いていませんでした。私のタイマーが設定され、タイマーの間隔は1000msです。誰か助けてくれますか?

+0

コードの間隔を初期化しましたか?コードに掲載されていません。 – jdweng

+0

私はVisual Studio Designerでインターバルを設定しました –

+0

これは学習目的のためか、コードプロジェクトのためのものですか?コードプロジェクトの場合は、Stopwatchでビルドを使用する必要があります。学習目的の場合は、クラス内のビルドを見てみることをおすすめします。https://github.com/mono/mono/blob/master/mcs/class/System/System.Diagnostics/Stopwatch.cs –

答えて

3

ストップウォッチではなく、腕時計を作るのが好きですね。

あなたはストップウォッチを作っている場合は、私はあなたが開始時間を保持している、あなたのクラスのフィールド/プロパティが必要だと思う:

private DateTime _start; 
private void button2_Click(object sender, EventArgs e) 
{ 
    _start = DateTime.Now; 
    timer1.Start(); 
} 

、その後timer1_Tickにあなたが行うことができます:

private void timer1_Tick(object sender, EventArgs e) 
{ 
    TimeSpan duration = DateTime.Now - _start; 
    label3.Text = duration.ToString(<some format string>); 
} 

timer1_Tickの現在のコードはローカル変数しか持たないため、常に同じ時刻が生成されるようですね。 :-)

+0

Visual Studioでエラーが表示されます。それは私には定義されていない変数 –

+0

@DorukAyar:しかし、最初のコード行で示したように、button2_Click()およびtimer1_Tick()プロシージャを持つクラスのフィールドとして_startを宣言する必要があります。 –