【学習】WinFormsでタイマーを使ってみよう② デジタル時計
Windows Forms アプリでは Timer コンポーネントを使うことで、
- 一定時間ごとに処理を実行する
- 時計
- アニメーション
- 自動更新
などを簡単に作ることができます。
今回はプロパティウインドウからイベントを登録する方法でTimerを使ってみます。これは WinFormsらしい作り方で、初学者にも理解しやすい方法です。
ソリューションとプロジェクトを作る
カウントダウンのチュートリアルで作成した TimerSample ソリューションに、新しいプロジェクトを追加します。
- ソリューションエクスプローラーでソリューションを右クリック → 追加 → 新しいプロジェクト
- テンプレート: Windows Forms アプリ (.NET Framework)
- プロジェクト名: Clock
同じソリューション内に複数のプロジェクトを置くことで、学習の流れを整理できます。作成すると Form1が表示されます。
フォームに配置するコントロール
Labelを配置する
ツールボックスから Label をフォームに配置します。
| プロパティ | 値 |
|---|---|
| 名前 | timeLabel |
| Text | 00:00:00 |
| Font | 少し大きくすると見やすいです |
Timerを配置する
ツールボックスから Timer をフォームにドラッグします。
フォームの下に timer1 が表示されます。(これは画面には表示されないコンポーネントです)
Timerの設定(プロパティ)
timer1 を選択して、プロパティウィンドウで設定します。
Interval = 1000
これは1000ミリ秒 = 1秒を意味します。
イベントを登録する
ここが重要です。
- プロパティウィンドウの上にある ⚡ 雷マーク(イベント) をクリックする
- その中に Tick がある
- Tick の右側をダブルクリックする
すると Visual Studio が timer1_Tick というイベントメソッドを自動生成します。
自動生成されたコード
Form1.cs に次のコードが追加されます。
private void timer1_Tick(object sender, EventArgs e)
{
}
このメソッドはIntervalで設定した時間ごとに呼ばれるメソッドです。
時刻を表示する
Tickイベントの中に次のコードを書きます。
private void timer1_Tick(object sender, EventArgs e)
{
timeLabel.Text = DateTime.Now.ToString("HH:mm:ss");
}
これで現在時刻がラベルに表示されます。
タイマーをスタートする
フォームが表示されたときにタイマーを動かします。Form1のコンストラクタに追加します。
public Form1()
{
InitializeComponent();
timer1.Start();
}
完成コード
using System;
using System.Windows.Forms;
namespace TimerSample
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
// タイマー開始
timer1.Start();
}
private void timer1_Tick(object sender, EventArgs e)
{
// 現在時刻を表示
timeLabel.Text = DateTime.Now.ToString("HH:mm:ss");
}
}
}
プログラムの流れ
フォームが表示される
↓
timer1.Start()
↓
1秒ごとに timer1_Tick が呼ばれる
↓
timeLabel に現在時刻を表示
実行結果
アプリを実行すると、00:00:00 のラベルが1秒ごとに更新されて時計のように動きます。
重要ポイント
WinFormsでは
- プロパティで設定
- イベントを登録
- イベントメソッドを書く
という流れが基本になります。
つまり
見た目 → 設定 → イベント → コード
の順番です。これが GUIプログラミングの基本構造です。





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