Visual C#でストップウォッチ機能を使う方法

このQ&Aのポイント
  • Visual C#を使用してWindowsフォームアプリでストップウォッチ機能を実装する方法について説明します。
  • デジタル数字を0.1秒単位で進める表示機能の実装方法について説明します。
  • スタート、ストップ、リセットを行うためのButtonのクリックイベントハンドラやStopwatchクラスの使用方法について説明します。
回答を見る
  • ベストアンサー

Visual C#でストップウォッチ機能を使うには

Windowsフォームアプリでストップウォッチの機能を使いたいのですが ( 1 ) 表示の機能として、デジタル数字が0.1秒単位で進んでいく様子をLabel等に表示させるには? ( 2 ) 内部の機能として、Button等でスタート、ストップ、リセットを行うには? ( 2 )については、StopwatchクラスのStopとStartメソッドを用いるというのまでは突き止めましたがここまでは正しいでしょうか。Buttonクリックイベントハンドラとインスタンス化とメソッド使用方法自体は最低限わかります。 Visual C# 2012を使っています。 ほぼ初心者レベルなので最低限の用語しか理解できないですが、宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • nak777r
  • ベストアンサー率36% (49/136)
回答No.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 再描画指示

studenteacher
質問者

お礼

返答が遅れて申し訳ありません。 全体的にこんがらがって分からない状態なので、今回は改めさせていただきます。 ご回答は大事な資料として今後参考にさせていただきます。 どうもありがとうございました。

その他の回答 (1)

  • nak777r
  • ベストアンサー率36% (49/136)
回答No.1

>( 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() + " ミリ秒";

studenteacher
質問者

補足

「タイマーなりスレッドなり」というのはどういう事でしょう? タイマーというと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(); の行で '('と'='が無効なトークンと出てしまいました。

関連するQ&A

  • ストップウォッチについて

    スタート、ストップ、リセットボタンが3つに分かれているストップウォッチを探しています。

  • こんなストップウォッチor時計を探してます

    以下のようなストップウォッチ、または、ストップウォッチ機能付き時計を探しています。 ・バックライト常時ONまたは蛍光、LED(暗いところで見る必要があるため) ・スタート、ストップ、リセットが簡単 (たとえば、目覚まし時計を止めるみたいに、上からたたくだけとか) ・デジタル表示(1秒単位の精度で十分) ・できれば置き時計タイプ ・できれば電池駆動 使用用途は、薄暗い中で手の届くところに置いておき、あるきっかけでスタートして、5分くらいの間の経過時間をちらっと確認したいのです。 終了したら、すぐにリセットして、次の計測に入ります。 正確な時間ではなく、秒単位の経過時間が分かれば十分なので、ラップやスプリットの機能はなくてもいいです。 こんな時計またはストップウォッチをご存じでしたら、教えてください。 よろしくお願いいたします。

  • Actionscript3.0 ストップウォッチ

    こんにちは Flash Actionscript3.0 についての質問です。 こちらのサイト http://labs.cybridge.jp/2009/10/actionscript30.html のストップウォッチの、 ボタン部分を自作のシンボルボタンに変えたいのですが、 その場合はコードをどのように書けばいいのでしょうか。 スタートボタンのインスタンス名startbtn ストップボタンのインスタンス名stopbtn です。 よろしくお願いします。

    • ベストアンサー
    • Flash
  • ストップウォッチのjavascriptがうまく動きません。

    こんにちは、片岡と言います。 次のファイル"stopwatch.html"を実行すると、ストップウォッチとして動作しません。 原因または解決策をご存知の方はいらっしゃいませんか。 ●stopwatch.html <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html;charset=Shift_JIS"> <meta http-equiv="Content-Script-Type" content="text/javascript"> <title>ストップウォッチ</title> <script language="JavaScript" type="text/javascript"> <!-- function startWatch() { document.myForm.display.value = this.time; this.timeoutID = setTimeout("startWatch()", 1000); this.time++; } function getTimeoutID() { return this.timeoutID; } function setTime(time) { this.time = time; } function StopWatch(){ this.time = 0; this.timeoutID = null; this.getTimeoutID = getTimeoutID; this.startWatch = startWatch; this.setTime = setTime; } var sWatch = new StopWatch(); //--> </script> </head> <body bgcolor="#ffffff"> <h1>ストップウォッチ</h1><hr> <form name=myForm><p> <input type="text" name="display" size=20 value=0>秒 <input type="button" value="START" onclick="sWatch.setTime(0);sWatch.startWatch()"> <input type="button" value="STOP" onclick="clearTimeout(sWatch.getTimeoutID())"> <input type="button" value="RESET" onclick="clearTimeout(sWatch.getTimeoutID());sWatch.setTime(0);document.myForm.display.value=0"> </p></form> </body> </html> "stopwatch.html"を実行すると、textform が、以下のようになりました。 >"0" → "undifined" → "NaN" しかし、私は、textform が >"0" → "1" → "2" → ... になると思っていました。 私は、"stopwatch.html"のオブジェクト形式を維持したいと思っています。 そのため、setTimeout()の中でthisを使いたいと思っています。 どのようにすれば、"stopwatch.html"をうまく動作させることができますか。 なお、"stopwatch.html"ファイルは、 JavaScriptプログラミング入門 第2版 ( http://ssl.ohmsha.co.jp/cgi-bin/menu.cgi?ISBN=4-274-06660-6 ) の258ページの"stopwatch.html"を参考にしました。 ●私の環境は以下の通りです。 OS: Microsoft Windows XP Professional SP2 webブラウザ: Firefox2.0.0.3, InternetExplorer6.0

  • JavaScriptのストップウォッチについて

    以下のコードでストップウォッチを作りました ここまではできるのですがここに新たな仕様として ・画面を開いてから3秒後に自動でカウントする というコードを入れたいです ですからスタートボタンをなくしてストップとリセットだけにしたいです 初心者なので変なコードになっているかもしれません その時はこうした方がいい!みたいなことを言っていただけるとすごく助かります どなたかご教授お願いします HTMLコード <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <link href="css/aaa.css" rel="Stylesheet" /> </head> <body> <h1>ストップウォッチ</h1> <div id="sec" style="font-size:100px;">0.00</div> <input id="btn_start" type="button" value="Start" onclick="start();"> <input id="btn_stop" type="button" value="Stop" onclick="stop();"> <input id="btn_reset" type="button" value="Reset" onclick="reset();"> <script> var sec = 0.00; var timerId; //スタートボタン function start() { timerId = setInterval(function() { sec += 0.01; document.getElementById('sec').innerHTML = Math.round(sec*100)/100; //もしも0.0で表示したければ10にすること },10); //この数字はカウントの速さ0.00表示の時は10! } //ストップボタン function stop(){ clearInterval(timerId); } //リセットボタン function reset(){ document.getElementById('sec').innerHTML = '0.00'; sec = 0.00; } </script> </body> </html> CSSコード body { background-color:#B2B2B2; } h1 { background-color:#00EFFF; } #sec { background-color:#00EFFF; } #btn_start ,#btn_stop ,#btn_reset { margin-top:25px; background: -moz-linear-gradient(top,#BFD9E5, #63B0CF 50%,#0080B3 50%,#09C); background: -webkit-gradient(linear, left top, left bottom, from(#BFD9E5), color-stop(0.5,#63B0CF), color-stop(0.5,#0080B3), to(#09C)); border: 1px solid #DDD; color: #FFF; width: 60px; padding: 10px 0; }

  • ストップウォッチのアプリやflashについて

    携帯電話でストップウォッチを使おうと思っています。 しかし、なかなか私が思っている機能が付いたものがありません。 ↓の条件にあうストップウォッチがありましたら教えてください。 1、auで使えて無料のもの 2、1/100まで表示できるもの 3、ラップがとれるもの 4、スタートを押した時に音がなるもの よろしくお願いします。

    • 締切済み
    • au
  • Visual C# 2008 Express Editionについて

    学校からVisual C# 2008 Express Editionを使った宿題が出たので 質問させてもらいます。 自由課題なので何を作ってもいい(テトリス、オセロから電卓など) そうなのですが、自分がプログラミングが苦手なのでなるべく簡単 なものを作りたいと思っています。が、なかなかアイデアが出ません。 そこで初心者にも作りやすいようなプログラムが あったら教えてください。 ちなみに条件としてButton,Label,TextBox,CheckBox,RadioButton,ListBox,Timer の7種から最低5種使うことと言われています。

  • javascriptについて

    javascriptについて 画像をイベントハンドラのonClickを使ってランダムに表示したいんですけど、どうしても出来ません。 buttonで作ったスタートボタンを押す→画像がランダムに表示される。 buttonで作ったストップボタンを押す→ランダムに表示していた画像が止まる。 これを3枚の画像を使って、スロットのようにしたいです。 また3枚の画像で、スロットを3つにして、同時にスタート(ストップ含め)させる方法はありませんか?

  • Visual Basic 2005 Express Edition の「Button」

    今までVBやってはいたんですが、Microsoft Visual Basic 2005と今まで使っていたVBの違いに困っています・・・。 現在、「ボタンを押すたびにC(変数名)が増え、Cの内容をLabel1に表示」というごく基本的な命令すら書けないです。 Private Sub Button1_Click(略 Dim c As Integer c = c + 1 Label1.Text = c End Sub こう書いて、何度Button1をクリックしてもC(Labelに表示される)が最初の1回しか増えません。 何かもっと書かないといけないことがあるのでしょうか? どうか教えてください。お願いします!

  • javascriptのストップウオッチのコード

    javascript初級勉強中です。 以下のコードを実行すると(1)小数点第2の動きがおかしい。  (2)一度リセットボタンを押さないとタイマーが動かない。 という2点の不具合が出ます。   どうすれば解決するでしょうか? <!DOCTYPE HTML> <head> <meta charset="utf-8"> <title>ストップウォッチ</title> </head> <body> <h1>ストップウオッチ</h1> <div id="sec" style="font-size:128px">0.00</div> <input type="button" value="Start!" onclick="run();"> <input type="button" value="Stop!" onclick="stop();"> <input type="button" value="Reset!" onclick="reset();"> <script> var statTime, stopTime, running = false, timerId; function run() { if (running)return; running = true; if (stopTime) { startTime = startTime + (new Date()).getTime() - stopTime; } if (! startTime) { startTime = (new Date()).getTime(); } timer(); //タイマー処理回していく } function timer() { document.getElementById('sec').innerHTML = (((new Date()).getTime()- startTime)/1000). toFixed(2); timerId =setTimeout(function() { timer(); //このタイマー自身を回していく }, 100); } function stop() { if (!running) return false; running = false; clearTimeout(timerId); //timerIdを渡して止める stopTime = (new Date()).getTime(); } function reset() { if (running) return;   startTime = undefined; document.getElementById('sec').innerHTML = '0.00'; } </script> </body> </html>

専門家に質問してみよう