概要
一定間隔でTextBlock
に現在時刻を設定するように作っていきます。
コードの表示
ソリューションエクスプローラーでMainWindow.xaml.cs
を開きます。
タイマー変数の用意
定期的にイベントを発生させるためのタイマーを用意します。
タイマーにはSystem.Windows.Threading
名前空間のDispatcherTimer
クラスを使用します。
MainWindow
クラスの定義の中に以下を入力してください。
private readonly DispatcherTimer _timer = new();
📘他の書き方
古いバージョンのC#では
クラス名 変数名 = new();
という書き方ができないので、その場合は
クラス名 変数名 = new クラス名();
と書きます。
DispatcherTimer
の部分で赤波線が表示されています。
赤波線の行でCtrl
キーを押しながら.
(ピリオド)を押してください。
そうすると解決方法が表示されます。
一番上の選択肢は、usingディレクティブ
を追加する方法です。

2番目の選択肢は完全修飾名前空間を指定する方法です。

一番上のusing ~
を選択してください。
using
が追加されて赤波線が消えました。
タイマーの変数にコメントを入れます。
変数の上の行で///
と入力してください。
↓↓↓↓↓
自動生成されたsummary
タグの中にコメントを入力してください。
タイマー初期化処理の作成
MainWindow
のコンストラクタにInitializeTimer();
と入力します。
まだこのメソッドは定義されていないので赤波線で表示されます。
Ctrl
+ .
を押してメソッド生成を選択してください。
↓↓↓↓↓
InitializeTimer
メソッドのthrow
の行を消して、以下を入力します。
// イベント発生間隔の設定
_timer.Interval = TimeSpan.FromMilliseconds(500);
// イベント登録
_timer.Tick += (_, _) =>
{
// 現在時刻を設定
TimeLabel.Text = DateTime.Now.ToString("HH:mm:ss");
};
500ミリ秒ごとにTick
イベントが発生します。
Tick
イベントではTextBlock
に現在時刻を設定しています。
📘他の書き方
_timer.Tick += (_, _) =>
{
// 処理
};
は
_timer.Tick += Timer_Tick;
と
private void Timer_Tick(object sender, EventArgs e)
{
// 処理
}
に分ける書き方もできますが、今回は複数のTick
イベントで処理を使いまわすようなことはないため、Tick
イベントに直接処理を記述しました。
また、
_timer.Tick += (object sender, EventArgs e) =>
{
// 処理
};
と書いても
_timer.Tick += (s, e) =>
{
// 処理
};
と書いてもよいですが、
今回は引数の値を使用しないので_
で破棄しています。
コメントを入れましょう。
///
コメント(ドキュメントコメント
)を書いておくと、コメントを設定した変数やメソッドなどにマウスカーソルを合わせるとコメント内容がツールチップで表示されます。

タイマー開始処理の記述
最後にコンストラクタのタイマー初期化処理の後に、タイマー開始処理を書きます。
_timer.Start();
usingの整理
usingディレクティブを整理しておきましょう。
エディタ内で右クリックし、usingの削除と並び変え
を選択します。
↓↓↓↓↓
ソース中で使用していないものが削除されます。
特に実行ファイルサイズが小さくなるとかはなく、ソースが少しすっきりするだけです。
実行
実行してみます。
画面を拡大すると時刻のテキストも拡大します。
Window
のShowInTaskbar
をOFFにしたため、タスクバーに実行プログラムのアイコンは表示されません。
Topmost
をONにしたため、他のウィンドウより前面に表示されます。