回答編集履歴
2
補足
answer
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
Windowsのフォームアプリは「イベント駆動型」と呼ばれるしくみで動いています。
|
4
4
|
|
5
|
-
ボタンを押された時、タイトルバーをクリックされているとき、タイマー(StopWatchとは異なる仕組み)の時間経過をしたとき、テキストボックス内が変更されたとき、ファイルがフォームにドロップされたとき、など、きっかけ(イベント)をもとに、それに呼応する「イベントハンドラ」が呼ばれます。イベントハンドラでは、自分がしたい処理をしたらすぐ終了(イベントハンドラを抜ける)させて、別のイベントが起きたときに別のイベントハンドラがいつでも呼び出せるようにします。
|
5
|
+
フォームをはじめて表示しようとするとき、ボタンを押された時、タイトルバーをクリックされているとき、タイマー(StopWatchとは異なる仕組み)の時間経過をしたとき、テキストボックス内の文字が変更されたとき、ファイルがフォームにドロップされたとき、フォームのサイズが変更されようとするとき、フォームを閉じようとするとき、など、きっかけ(イベント)をもとに、それに呼応する「イベントハンドラ」が呼ばれます。イベントハンドラでは、自分がしたい処理をしたらすぐ終了(イベントハンドラを抜ける)させて、別のイベントが起きたときに別のイベントハンドラがいつでも呼び出せるようにします。
|
6
6
|
|
7
7
|
Button2_Click イベントハンドラの While True ... End While ループは、抜ける条件がない永久ループを形成していて、CPU時間も食いますし、上記のイベント駆動型アプリケーションの観点からも宜しくないです。
|
8
8
|
|
1
修飾
answer
CHANGED
@@ -1,13 +1,14 @@
|
|
1
|
-
こんにちは。質問文には、各Buttonがクリックされたときに何をしたいのかを書いたほうが良いと思います。あと、コードは
|
1
|
+
こんにちは。質問文には、各Buttonがクリックされたときに何をしたいのかを書いたほうが良いと思います。あと、コードはコード表記(<code>アイコンのボタン)で囲って整形表示させましょう。
|
2
2
|
|
3
|
-
Windowsのフォームアプリ
|
3
|
+
Windowsのフォームアプリは「イベント駆動型」と呼ばれるしくみで動いています。
|
4
4
|
|
5
|
-
ボタンを押された時、タイトルバーをクリックされているとき、タイマー(StopWatchとは異なる仕組み)の時間経過をしたとき、など、きっかけ(イベント)をもとに、呼応する「イベントハンドラ」が呼ばれ
|
5
|
+
ボタンを押された時、タイトルバーをクリックされているとき、タイマー(StopWatchとは異なる仕組み)の時間経過をしたとき、テキストボックス内が変更されたとき、ファイルがフォームにドロップされたとき、など、きっかけ(イベント)をもとに、それに呼応する「イベントハンドラ」が呼ばれます。イベントハンドラでは、自分がしたい処理をしたらすぐ終了(イベントハンドラを抜ける)させて、別のイベントが起きたときに別のイベントハンドラがいつでも呼び出せるようにします。
|
6
6
|
|
7
7
|
Button2_Click イベントハンドラの While True ... End While ループは、抜ける条件がない永久ループを形成していて、CPU時間も食いますし、上記のイベント駆動型アプリケーションの観点からも宜しくないです。
|
8
8
|
|
9
|
-
画面
|
9
|
+
画面表示の更新は、リアルタイムで行うようにしたつもりでも、実際にはモニタのリフレッシュレートや、CPUクォンタムその他から、本当のリアルタイムでは更新されませんし、なにしろ人間の目にはわかりません。
|
10
|
-
なので、通常は50msなどのまあまあ短めな間隔で表示更新を行います。
|
10
|
+
なので、通常は50msなどの、まあまあ短めな間隔で表示更新を行います。あくまで画面更新の処理の間隔ですので、時間の計測自体にストップウォッチを利用することは妥当です。
|
11
|
-
Timer コントロールをご存知でしょうか?ストップウォッチで時間を計測しつつ、Timerコントロールは、表示更新用として(時間の計測用ではなくて)、50msや100msなど指定した間隔で呼び出されるイベントハンドラに、画面更新(ラベルへの反映)を記載します。DoEventsは不要です。
|
12
11
|
|
13
|
-
|
12
|
+
[Timer コントロール](https://msdn.microsoft.com/ja-jp/library/system.windows.forms.timer.aspx)をご存知でしょうか?ストップウォッチで時間を計測しつつ、Timerコントロールは、表示更新用として(時間の計測用ではなくて)、50msや100msなど指定した間隔で呼び出されるイベントハンドラに、画面更新(ラベルへの反映)を記載します。DoEventsは不要です。
|
13
|
+
|
14
|
+
例:[ラーメンタイマーを作ってみる - ababaさん](http://aba.doorblog.jp/archives/18005560.html)
|