2011-12-30 17 views
3

こんにちは私は単純なテキストボックスを持つWindowsフォームを設計する必要があります。テキストボックスには、テキスト(00:00形式)のようなタイマーが含まれています。WinFormでデジタル時計を実行

毎秒ページを更新して、それに応じてテキストボックスの内容を変更したいとします。 (まるでデジタル時計のように、1時間走っている!)。

私はSystem.Windows.Forms.Timerクラスを使用する必要があり、Timerアイテムをツールボックスからフォームにドロップしました。

次は... Thread.Sleep(1000)機能を使用する必要がありますか?

ここに私が試みているコードがあります。プログラムのどこが間違っているのか分かりますが、thread.sleep()の部分では、自分のコードが実行されることがさらに悪化します。私はツールボックスでTimerのものを試しましたが、処理できませんでした(コードを実行すると、正常にコンパイルされ、アプリケーションが1時間汚れたFor-Loopsのためにフリーズします)。

public partial class Form1 : Form 
{ 
    Button b = new Button(); 
    TextBox tb = new TextBox(); 
    //System.Windows.Forms.Timer timer1 = new System.Windows.Forms.Timer(); 

    public Form1() 
    { 
     b.Click += new EventHandler(b_click); 
     b.Text = "START"; 
     tb.Text = "00 : 00"; 
     //timer1.Enabled = true; 
     //timer1.Interval = 1000; 
     tb.Location = new Point(100, 100); 
     this.Controls.Add(tb); 
     this.Controls.Add(b); 
     InitializeComponent(); 
    } 

    private void refreshTimer_Tick() 
    { 

     for (int i = 0; i < 60; i++) 
     { 
      for (int j = 0; j < 60; j++) 
      { 
       Thread.Sleep(500); 
       string TempTime = string.Format("{0:00} : {1:00}",i,j); 
       tb.Text = TempTime;      
       Thread.Sleep(500); 

      } 
     } 
    } 
    public void b_click(object sender, EventArgs e) 
    { 
     refreshTimer_Tick(); 

    } 
} 
+1

これまで行ってきたことを確認するには、現在のコードを投稿してください。 – Oded

+1

いいえ、あなたはThread.Sleepを使う必要はありません。質問に答えました... – Reniuz

+1

あなたは疑問が分かりません。それはウェブかどうか?それはあなたがタイマーで毎秒テキストボックスを更新することができない場合はjavascriptを使用する必要があります。タイマーは、何ミリ秒も前のイベントを発生させます。 – albertjan

答えて

15

タイマーとリフレッシュ期間を設定します。 (1秒)

timer1.Enabled = true; 
timer1.Interval = 1000; 

その後、あなたはタイマーが1秒ごとに何をしたいのかを実装する必要があります:私は台無しにどこ

private void timer1_Tick(object sender, EventArgs e) 
{ 
    DigiClockTextBox.Text = DateTime.Now.TimeOfDay.ToString(); 
} 
-1

は、最後に私が知っていました。ここで私はそれが欲しかったのと同じように、すべて正常に動作する修正されたコードです。

public partial class Form1 : Form 
{ 
    Button b = new Button(); 
    TextBox tb = new TextBox(); 




    public Form1() 
    { 
     b.Click += new EventHandler(b_click); 
     b.Text = "START"; 
     tb.Text = "CLICK START TO BEGIN COUNTDOWN !!"; 
     tb.Width = 300; 
     tb.ReadOnly = true; 



     tb.Location = new Point(10, 100); 
     this.Controls.Add(tb); 
     this.Controls.Add(b); 
     InitializeComponent(); 
     timer1.Interval = 1000; 

    } 

    public void b_click(object sender, EventArgs e) 
    { 

     timer1.Start(); 


    } 

    int tt = 0; 
    int mm = 0; 
    private void timer1_Tick(object sender, EventArgs e) 
    { 


     tb.Text = string.Format("{0:00} {1:00}",(mm), (tt)); 
     tt += 1; 
     if (tt % 60 == 0) 
     { 
      mm += 1; 
      tt = 0; 
     } 
     if (tt > 3600) 
     { 
      timer1.Stop(); 
     } 
    } 
} 
関連する問題