DateTimePicker の CloseUp イベントを丁寧に解説
DateTimePicker の CloseUp イベント は、
ユーザーがカレンダーを閉じた瞬間に発生するイベントです。
「カレンダーを閉じたあとにだけ実行したい処理」がある場合にとても役立ちます。
💡 一言まとめ
CloseUp = カレンダーが“閉じられた瞬間”に発生するイベント
CloseUp = カレンダーが“閉じられた瞬間”に発生するイベント
CloseUp イベントとは?
| イベント名 | CloseUp |
|---|---|
| 発生タイミング | ユーザーがカレンダーを閉じたとき |
| 用途 | フォーカス制御、UI 更新、後処理、確認メッセージなど |
カレンダーを閉じる原因は、日付を選択したときだけでなく、
クリック以外の理由(フォーカス移動など)でも発生します。
基本的な使い方
デザイナのイベント一覧(⚡)から CloseUp をダブルクリックすると
イベントハンドラが作成されます。
例:カレンダーを閉じたときにメッセージを表示
private void dateTimePicker1_CloseUp(object sender, EventArgs e)
{
Console.WriteLine("カレンダーが閉じられました");
}
カレンダーを閉じるたびに処理が実行されます。
CloseUp の実務的な利用例
① 閉じたタイミングで入力チェック
選択肢が確定する“閉じる瞬間”でチェックするのが自然です。
private void dateTimePicker1_CloseUp(object sender, EventArgs e)
{
if (dateTimePicker1.Value < DateTime.Today)
{
labelError.Text = "過去の日付は選択できません";
}
else
{
labelError.Text = "";
}
}
② カレンダーを閉じたら別のコントロールへフォーカスを移す
private void dateTimePicker1_CloseUp(object sender, EventArgs e)
{
textBox1.Focus();
}
入力フォームの操作感をよりスムーズにできます。
③ UI の更新(背景色・状態ラベルなど)
private void dateTimePicker1_CloseUp(object sender, EventArgs e)
{
labelSelected.Text = $"選択結果: {dateTimePicker1.Value:yyyy/MM/dd}";
}
ValueChanged / DropDown との違い
似ているイベントが多いので、ここで整理します。
| イベント | 発生タイミング | 特徴 |
|---|---|---|
| DropDown | カレンダーを開いた瞬間 | 事前処理・UI 初期化向け |
| ValueChanged | 選択日付が変更された瞬間 | 日付変更判定に最適 |
| CloseUp | カレンダーを閉じた瞬間 | 後処理・確定処理に最適 |
✔ 「日付が変わったかどうか」
→ ValueChanged を使うべき✔ 「閉じるタイミングで何かしたい」
→ CloseUp を使う
→ ValueChanged を使うべき✔ 「閉じるタイミングで何かしたい」
→ CloseUp を使う
注意点
- 閉じた理由を判定することはできない
→ フォーカスが外れただけでも CloseUp は発生します。 - 日付変更とは無関係
→ CloseUp だけでは「日付が変わったか」は判断できません。 - ShowUpDown = true の場合は発生しない
→ カレンダーが表示されないスピン形式では無効。 - 内部処理に時間がかかると UI が重く感じられる
→ CloseUp は UI 操作直後に実行されるため軽めの処理が望ましい。
CloseUp を使ったおすすめパターン
① 日付が確定したら別処理を実行(ValueChanged と組み合わせ)
private bool _changed = false;
private void dateTimePicker1_ValueChanged(object sender, EventArgs e)
{
_changed = true;
}
private void dateTimePicker1_CloseUp(object sender, EventArgs e)
{
if (_changed)
{
DoUpdate(); // 日付が変わっていたら処理
_changed = false;
}
}
業務アプリではよく使われる安全なパターンです。
② 閉じた瞬間だけ UI をリフレッシュ
private void dateTimePicker1_CloseUp(object sender, EventArgs e)
{
panelPreview.Refresh();
}
まとめ
- CloseUp はカレンダーが“閉じた瞬間”に発生するイベント
- 入力チェック・フォーカス移動・UI更新など後処理に最適
- 日付変更の判断は ValueChanged を使う
- CloseUp は ShowUpDown 方式(スピン形式)では発生しない
DropDown →(操作)→ CloseUp
という UI の流れの中で、適切にハンドリングすることで、
ユーザーにとって心地よい日付入力体験を提供できます。
Please follow and like us:

コメント