【VB.Net】タイマーの使い方~3分タイマーを作ってみよう~

どうも!リョクちゃです。

今回は、タイマーと呼ばれるコントロールの使い方を紹介し、

最終的に3分タイマーをアプリケーションで作れるよう目指していきます。

ちなみに前回はこちら

アプリケーションを作る際に、開発者の自由ではありますがバージョンを付けることがあります。今回はこのバージョンといわれる、アプリケーションのバージョンを取得する方法を紹介していきます。



タイマー

Windowsフォームアプリケーションでは、Form画面を作成していくときに

各種様々なコントロールが取り揃えられています。

これらの中にタイマーと呼ばれるコントロールがあります。

タイマーコントロールは名前の通り、タイマー機能を持ったコントロールです。

時間の計測やある一定の時間が経過するごとに処理を行いたいときなど

一般的には使われます。

ただし、気を付けないといけない点もあります。

精度が求められるアプリケーションでタイマーを使う場合は注意が必要です。

実はタイマー、精度はあまりよくなく、状況によって精度にばらつきが生じます

また、使うマシンの依存も少なからずあるため、異なるマシン同士でタイマーを

スタートさせても必ずしも同じタイミングでストップされることがないときもあります

これらを考慮したうえで、アプリケーションを作る際は気を付けましょう。

※ここはあくまで留意しておくだけでいいと思います。

まずは簡単に使えるようにしていきましょう。

準備編:フォームを作成

それでは早速、タイマーについて実践を踏まえ学んでいきましょう。

まず最初に準備として、下のようなフォームを作成します。

これに加えて、ツールボックスからタイマーを探し、

フォーム画面上へドラッグ&ドロップをします。

追加されると、下の図のようになります。

ちなみに筆者の環境は、

  • VisualStudio2019
  • Windows 10 64bit
  • .Net Framework 4.5.2

です。


タイマーイベントを理解する

タイマーには、ユーザが指定した間隔によって、

タイマーが持つイベントを発生させることができます。

これは

Timer.Tick

というイベントになります。

使い方としては、

タイマーが持つ、Intervalプロパティにどの間隔でイベントを発生させたいかを

設定してあげる必要があります。

これを設定するには、

Timer.Interval = “間隔(ミリ秒)”

と書くことで設定できます。

ちなみに設定をしないと、初期値としては100ミリ秒が与えられます。

今回は、1000ミリ秒に設定をしていきます。

では、配置したタイマーを使い、Intervalを変更していきます。

コードは下のようになります。

Timer.Tickイベントを使う

それでは、フォーム上に配置したタイマーをダブルクリックして、

Tickイベントをコードエディタに反映させましょう。

それでは、Intervalで設定した間隔後にTickイベントが発生したら、

メッセージボックスを表示するコードを書いてきましょう。

コードは下のようになります。

ただ、このままでは実行してもメッセージボックスは表示されません。

まだ、タイマーを使う準備は整っていないからです。

最後にタイマーを起動させるコードを書いてあげる必要があります。

起動させるには、

Timer.Start()

と書きます。

これを先ほど書いたIntervalの後に書きます。

コードは下のようになります。

これで実行をといいたいのですが、このまま実行してしまうと延々と指定した間隔で、

メッセージボックスが表示されてしまいます

これを防ぐために、タイマーを停止してあげる必要があります

タイマーを停止するには、

Timer.Stop()

と書きます。

これで実行すると、指定した間隔で実行した際にタイマーの停止がはいるので、

ボタンを押さない限りは、タイマーのイベントは1回のみになります。

実際にボタンを押して指定間隔経過した際にメッセージボックスが表示されるのが、

下の画面になります。

これでタイマーイベントの起動のさせ方、停止のさせ方ができるようになりました。

これらを使って、3分タイマーを作っていきましょう。



3分タイマーを作っていく

フォーム画面はそのままで、タイマーのインターバルもそのままで問題ありません。

作成するアプリケーションの機能としては、

  • STARTボタンが押されたらタイマーを起動
  • STOPボタンが押されたらタイマーを停止
  • 画面起動時ラベルには3:00と表示
  • Timer.Tickで1000ミリ秒ごとにラベルに表示される時刻を刻んでいく

この機能を実現できるように作っていきましょう。

まず、それぞれボタンのイベントをコードエディタに反映させましょう。

そして画面が起動されたら3:00と表示がされるように、

フォームのロードイベントにラベルの値を設定します。

コードは下のようになります。

タイマーが経過したら1000ミリ秒ごとに時刻を刻んでいくコードを書いていきます。

最初にコードを下に記述します。

以下、考え方やコードの補足をしていきます。

スポンサーリンク




ラベルの時刻を秒に直す

3:00と記述された表記から、秒にまず直さないといけません

秒に直すには、いろいろなやり方がありますが、今回は文字列なので

分と秒の区切り文字である:(コロン)使って分けています。

分けた後に変数として宣言してあったintSecに分の値を使って秒に換算しています。

➔ 3 × 60 = 180秒

これを画面起動時に書いています。

時刻を刻んでいく

タイマーが起動されたら、指定間隔経過したタイミングで、

最初に時刻が0:00出会った場合は処理が終了するように条件分岐であるif文を書いています。

0:00ではない場合は、時刻を刻む処理をさせています。

時刻を刻むには、画面起動時に換算した変数intSecの値を-1することで、

現在の秒数から刻んでいます。

刻んだ時刻の表示

刻んだ時刻を表示するには、秒から分に換算しなくてはいけません

秒から分に換算するにはそれぞれ、

  • 分 = 現在の秒数 / 60
  • 秒 = 現在の秒数 Mod 60 ( 現在の秒数 % 60)

分は、割った値の商を代入しています。

秒は、割った値の余りを代入しています。

VB.Netでは、Modを使うことで余りを取得することができます

これらを最後に文字列に変換し連結することで現在の経過時刻を表示しています。

STOPボタンを押して、タイマーを停止

STOPボタンを押すことで現在の経過時間を残したまま、

タイマーの停止ができるようになっています。

再度、STARTボタンを押すことで現在の経過時刻から引き続き

時を刻んでいきます。

実行して、コードを確認

実際に実行して3分経過したら0:00で停止するか確認してみましょう。

起動時

途中経過

3:00終了

といった感じになります。

コード内の起動時に表示されるラベルの値を変更することで、

3:00以外でも59:00まではタイマーとして機能します。

以上、3分タイマー?のアプリケーション作成になります、お疲れ様です。

まとめ

タイマーを使うには

  1. タイマーの間隔を設定(初期値は100ミリ秒)
    Timer.Interval
  2. タイマーをスタート
    Timer.Start()
  3. タイマーをストップ
    Timer.Stop()

の順番の処理を忘れずに。

指定間隔経過した際に処理をするイベントとして

Timer.Tick

があります。

タイマーは使えるようになるとアプリケーションの開発の幅が広がります。

ぜひ使っていただけたらなと思います。

ご覧いただきありがとうございます。

・こちらの書籍を参考にVB.Net勉強しています。

スポンサーリンク