【学習】WinFormsでタイマーを使ってみよう① カウントダウン

広告

これまでの学習では、

  • ボタンを押す
  • クリックイベントが呼ばれる

という形でプログラムを動かしてきました。

しかし、アプリにはもう一つの動き方があります。

プログラムが自動で動く

という仕組みです。

今回は WinForms の Timer を使って、1秒ごとに数字が減っていく簡単なカウントダウンを作ります。

今日作るもの

Start ボタンを押すと

10
9
8
7
...

と 1秒ごとに数字が減っていきます。

0になったら終了メッセージを表示します。


ソリューションとプロジェクトを作る

Visual Studio で新しいプロジェクトを作ります。

  • テンプレート: Windows Forms アプリ (.NET Framework)
  • ソリューション名: TimerSample
  • プロジェクト名: Countdown

作成すると Form1 が表示されます。


フォームに配置するコントロール

フォームに次の3つを配置します。

コントロール名前
Labellabel1
ButtonstartButton
Timertimer1

Timer は画面には表示されません。フォーム下のコンポーネントトレイに配置されます。


Timerの設定(プロパティ)

Timer を選択し、プロパティウィンドウで

Interval = 1000

と設定します。

1000ミリ秒なので、1秒ごとにイベントが発生します。


Timerイベントの登録(雷マーク)

Timer を選択した状態で、プロパティウィンドウの ⚡ 雷マーク(イベント) をクリックします。

イベント一覧が表示されます。Tick というイベントがあります。

ここをダブルクリックすると、Visual Studio が自動で次のメソッドを作ってくれます。

private void timer1_Tick(object sender, EventArgs e)
{

}

このメソッドはTimerが動いたときに呼ばれる処理を書く場所です。


Startボタンのイベント

Startボタンも同じです。ボタンをダブルクリックすると startButton_Click イベントが作成されます。


完成コード

using System;
using System.Windows.Forms;

namespace TimerSample
{
    public partial class Form1 : Form
    {
        int count = 10;   // 残り秒数

        public Form1()
        {
            InitializeComponent();
        }

        private void startButton_Click(object sender, EventArgs e)
        {
            // スタート時に10秒に戻す
            count = 10;

            label1.Text = count.ToString();

            // タイマー開始
            timer1.Start();
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            // 1秒ごとにここが呼ばれる
            count--;

            label1.Text = count.ToString();

            if (count <= 0)
            {
                timer1.Stop();
                MessageBox.Show("終了!");
            }
        }
    }
}

プログラムの流れ

Startボタンを押す
        ↓
timer1.Start()
        ↓
1秒ごとに timer1_Tick が呼ばれる
        ↓
count が減る
        ↓
Label を更新
        ↓
0になったら停止

重要ポイント

Timerは「一定時間ごとにイベントを起こす」仕組みです。

今回は Interval = 1000 なので、1秒ごとに Tick イベントが呼ばれます。

WinFormsアプリらしい動きとして、

  • 自動で動く
  • 時間で処理が進む
  • 画面が更新される

というアプリケーションらしい動きになります。


発展アイデア

Timer を使うと次のようなものも作れます。

  • デジタル時計
  • ストップウォッチ
  • タイピングゲームの制限時間
  • 簡単なゲームのループ処理

Timer はアプリやゲームの基本的な仕組みの一つです。

訪問数 22 回, 今日の訪問数 22回

広告