【学習】WinFormsでタイマーを使ってみよう① カウントダウン
これまでの学習では、
- ボタンを押す
- クリックイベントが呼ばれる
という形でプログラムを動かしてきました。
しかし、アプリにはもう一つの動き方があります。
プログラムが自動で動く
という仕組みです。
今回は WinForms の Timer を使って、1秒ごとに数字が減っていく簡単なカウントダウンを作ります。
今日作るもの
Start ボタンを押すと
10
9
8
7
...
と 1秒ごとに数字が減っていきます。
0になったら終了メッセージを表示します。
ソリューションとプロジェクトを作る
Visual Studio で新しいプロジェクトを作ります。
- テンプレート: Windows Forms アプリ (.NET Framework)
- ソリューション名: TimerSample
- プロジェクト名: Countdown
作成すると Form1 が表示されます。
フォームに配置するコントロール
フォームに次の3つを配置します。
| コントロール | 名前 |
|---|---|
| Label | label1 |
| Button | startButton |
| Timer | timer1 |
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 はアプリやゲームの基本的な仕組みの一つです。




ディスカッション
コメント一覧
まだ、コメントがありません