[C#][Windows Formsアプリ][DateTimePicker] CloseUpプロパティでカレンダーが閉じられた瞬間を捉える

スポンサーリンク

DateTimePicker の CloseUp イベントを丁寧に解説

DateTimePickerCloseUp イベント は、
ユーザーがカレンダーを閉じた瞬間に発生するイベントです。

「カレンダーを閉じたあとにだけ実行したい処理」がある場合にとても役立ちます。

💡 一言まとめ
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 を使う

 

注意点

  • 閉じた理由を判定することはできない
    → フォーカスが外れただけでも 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:

コメント

タイトルとURLをコピーしました