- ベストアンサー
Visual C#でストップウォッチ機能を使う方法
- Visual C#を使用してWindowsフォームアプリでストップウォッチ機能を実装する方法について説明します。
- デジタル数字を0.1秒単位で進める表示機能の実装方法について説明します。
- スタート、ストップ、リセットを行うためのButtonのクリックイベントハンドラやStopwatchクラスの使用方法について説明します。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>「タイマーなりスレッドなり」というのはどういう事でしょう? まず、実験として ボタンを1個配置して、そこに Label1.Text = sw.ElapsedMilliseconds.toString() + " ミリ秒"; を記述して実行 追加したボタンを押すたびに 値が変わる事を確認 逆に言えば、ボタンを押さなきゃ変わらない事を確認したって事なので、 定期的に実行されるイベントに Label.Text = sw.ElapsedMilliseconds.toString() + " ミリ秒"; を記述すれば良い で、定期的に実行されるイベントを持つのが 「タイマーなりスレッドなり」と言う事 >タイマーというとTimerコントローラの事ですか? Timer コントロールの事 >また >LabelのTextに時間を代入する文はどの位置で何のイベントハンドラーで記入すればいいでしょうか? がまさに ↓ これ Label1.Text = sw.ElapsedMilliseconds.toString() + " ミリ秒"; Label1.Text ↑ラベル1のテキストプロパティ に = sw.ElapsedMilliseconds ↑ストップウォッチの、経過時間(ミリ秒)を .toString() + " ミリ秒"; ↑文字列に変換して、後ろに" ミリ秒"とつけてセットする この後ろにリフレッシュ関数を付けるほうが良いかも Label1.Text = sw.ElapsedMilliseconds.toString() + " ミリ秒"; Label1.Refresh(); //← Label1 再描画指示
その他の回答 (1)
- nak777r
- ベストアンサー率36% (49/136)
>( 2 )については、StopwatchクラスのStopとStartメソッドを用いるというのまでは突き止めましたが >ここまでは正しいでしょうか 大丈夫でしょう 以下は大まかな流れ 宣言 private System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch(); スタートボタン押下の処理 if (sw.IsRunning) { sw.Stop(); } sw.Reset(); sw.Start(); ストップボタン押下の処理 if (sw.IsRunning) { sw.Stop(); } タイマーなりスレッドなり Label.Text = sw.ElapsedMilliseconds.toString() + " ミリ秒";
補足
「タイマーなりスレッドなり」というのはどういう事でしょう? タイマーというとTimerコントローラの事ですか? また LabelのTextに時間を代入する文はどの位置で何のイベントハンドラーで記入すればいいでしょうか? 以下のコード(一部割愛)を実行しようとしたところビルドエラーが出ました。 public Form1() { InitializeComponent(); } private Stopwatch sw = new Stopwatch(); label1.Text = sw.ElapsedMilliseconds.ToString(); private void button1_Click(object sender, EventArgs e) { if (sw.IsRunning) { sw.Stop(); } sw.Reset(); sw.Start(); } private void button2_Click(object sender, EventArgs e) { if (sw.IsRunning) { sw.Stop(); } } ここの label1.Text = sw.ElapsedMilliseconds.ToString(); の行で '('と'='が無効なトークンと出てしまいました。
お礼
返答が遅れて申し訳ありません。 全体的にこんがらがって分からない状態なので、今回は改めさせていただきます。 ご回答は大事な資料として今後参考にさせていただきます。 どうもありがとうございました。