[C#] DateTimePickerでカレンダーを表示する方法

C#のWindowsフォームアプリケーションでDateTimePickerコントロールを使用してカレンダーを表示するには、まずVisual StudioのツールボックスからDateTimePickerをフォームにドラッグアンドドロップします。

このコントロールは、デフォルトで日付を選択するためのカレンダーを表示します。

プロパティウィンドウでFormatプロパティをDateTimePickerFormat.ShortDateTimePickerFormat.Longに設定することで、表示形式を変更できます。

ユーザーがコントロールをクリックすると、カレンダーがポップアップし、日付を選択できるようになります。

カレンダーの表示は自動的に行われるため、特別なコードを書く必要はありません。

この記事でわかること
  • DateTimePickerの基本的な使い方
  • カレンダーの表示形式の設定方法
  • イベント処理の活用法
  • 複数のDateTimePickerの連携方法
  • 日付範囲や時間の選択機能の実装方法

目次から探す

カレンダー表示の設定

Formatプロパティの設定

DateTimePickerコントロールのFormatプロパティを設定することで、カレンダーの表示形式を変更できます。

以下のように、FormatプロパティをDateTimePickerFormat.ShortDateTimePickerFormat.Customに設定することができます。

partial class MyForm : Form
{
    public MyForm()
    {
        InitializeComponent();
        
        // DateTimePickerのFormatプロパティを設定
        dateTimePicker1.Format = DateTimePickerFormat.Short; // 短い日付形式
    }
}

この設定により、カレンダーは短い日付形式で表示されます。

DateTimePickerFormat.Customを使用する場合は、CustomFormatプロパティも設定する必要があります。

カスタムフォーマットの使用

カスタムフォーマットを使用することで、日付の表示形式を自由に設定できます。

例えば、yyyy年MM月dd日の形式で表示する場合、以下のように設定します。

partial class MyForm : Form
{
    public MyForm()
    {
        InitializeComponent();
        
        // DateTimePickerのFormatプロパティをカスタムに設定
        dateTimePicker1.Format = DateTimePickerFormat.Custom; // カスタム形式
        dateTimePicker1.CustomFormat = "yyyy年MM月dd日"; // 表示形式を指定
    }
}

この設定により、カレンダーは「2023年10月01日」のように表示されます。

カスタムフォーマットを使用することで、ユーザーにとってわかりやすい形式で日付を表示することが可能です。

DateTimePickerのイベント処理

ValueChangedイベントの活用

DateTimePickerコントロールのValueChangedイベントは、ユーザーが日付を変更したときに発生します。

このイベントを利用することで、選択された日付に基づいて他の処理を実行することができます。

以下の例では、日付が変更されたときに選択された日付を表示するメッセージボックスを表示します。

partial class MyForm : Form
{
    public MyForm()
    {
        InitializeComponent();
        
        // ValueChangedイベントにイベントハンドラを追加
        dateTimePicker1.ValueChanged += DateTimePicker1_ValueChanged;
    }
    private void DateTimePicker1_ValueChanged(object sender, EventArgs e)
    {
        // 選択された日付を取得
        DateTime selectedDate = dateTimePicker1.Value;
        
        // メッセージボックスで表示
        MessageBox.Show($"選択された日付: {selectedDate.ToString("yyyy年MM月dd日")}");
    }
}

このコードを実行すると、ユーザーが日付を変更するたびに、選択された日付がメッセージボックスに表示されます。

これにより、ユーザーの選択に応じた動的な処理が可能になります。

CloseUpイベントの利用

CloseUpイベントは、カレンダーが閉じられたときに発生します。

このイベントを利用することで、カレンダーが閉じた後に特定の処理を実行することができます。

以下の例では、カレンダーが閉じられたときに選択された日付をラベルに表示します。

partial class MyForm : Form
{
    public MyForm()
    {
        InitializeComponent();
        
        // CloseUpイベントにイベントハンドラを追加
        dateTimePicker1.CloseUp += DateTimePicker1_CloseUp;
    }
    private void DateTimePicker1_CloseUp(object sender, EventArgs e)
    {
        // 選択された日付を取得
        DateTime selectedDate = dateTimePicker1.Value;
        
        // ラベルに表示
        label1.Text = $"選択された日付: {selectedDate.ToString("yyyy年MM月dd日")}";
    }
}

このコードを実行すると、カレンダーを閉じた後に選択された日付がラベルに表示されます。

これにより、ユーザーが日付を選択した後のフィードバックを提供することができます。

DateTimePickerのカスタマイズ

カレンダーの外観変更

DateTimePickerコントロールの外観を変更することで、アプリケーションのデザインに合わせた見た目を実現できます。

例えば、CalendarMonthBackgroundプロパティを使用してカレンダーの背景色を変更することができます。

以下の例では、カレンダーの背景色を薄い青色に設定しています。

partial class MyForm : Form
{
    public MyForm()
    {
        InitializeComponent();
        
        // カレンダーの外観を変更
        dateTimePicker1.CalendarMonthBackground = Color.LightBlue; // 背景色を設定
    }
}

この設定により、カレンダーの背景色が変更され、ユーザーにとって視覚的にわかりやすいインターフェースを提供できます。

また、フォントやサイズを変更することも可能です。

日付の制限設定

DateTimePickerコントロールでは、選択できる日付の範囲を制限することができます。

これにより、特定の期間内の日付のみを選択可能にすることができます。

以下の例では、選択可能な日付を2023年1月1日から2023年12月31日までに制限しています。

partial class MyForm : Form
{
    public MyForm()
    {
        InitializeComponent();
        
        // 日付の制限を設定
        dateTimePicker1.MinDate = new DateTime(2023, 1, 1); // 最小日付
        dateTimePicker1.MaxDate = new DateTime(2023, 12, 31); // 最大日付
    }
}

この設定により、ユーザーは指定された範囲内の日付のみを選択できるようになります。

これにより、誤った日付の選択を防ぎ、アプリケーションの信頼性を向上させることができます。

DateTimePickerの応用例

日付範囲の選択

DateTimePickerを使用して、ユーザーが開始日と終了日を選択できるようにすることができます。

これにより、特定の期間を選択する機能を実装できます。

以下の例では、2つのDateTimePickerを使用して、開始日と終了日を選択する方法を示します。

partial class MyForm : Form
{
    public MyForm()
    {
        InitializeComponent();
        
        // 開始日と終了日を設定
        dateTimePickerStart.MinDate = new DateTime(2023, 1, 1);
        dateTimePickerEnd.MinDate = dateTimePickerStart.Value; // 終了日の最小値を開始日とする
        // ValueChangedイベントで終了日の最小値を更新
        dateTimePickerStart.ValueChanged += DateTimePickerStart_ValueChanged;
    }
    private void DateTimePickerStart_ValueChanged(object sender, EventArgs e)
    {
        dateTimePickerEnd.MinDate = dateTimePickerStart.Value; // 開始日以降の日付を選択可能にする
    }
}

このコードを実行すると、ユーザーは開始日を選択した後、その日以降の日付のみを終了日として選択できるようになります。

これにより、日付範囲の選択が簡単に行えます。

時間の選択を含めたDateTimePicker

DateTimePickerは、日付だけでなく時間も選択できるように設定することができます。

以下の例では、時間の選択を含めたDateTimePickerを作成します。

partial class MyForm : Form
{
    public MyForm()
    {
        InitializeComponent();
        
        // DateTimePickerのFormatをカスタムに設定
        dateTimePicker1.Format = DateTimePickerFormat.Custom;
        dateTimePicker1.CustomFormat = "yyyy年MM月dd日 HH:mm"; // 日付と時間を表示
    }
}

この設定により、ユーザーは日付と時間を同時に選択できるようになります。

表示形式をカスタマイズすることで、より柔軟な日付と時間の選択が可能になります。

複数のDateTimePickerの連携

複数のDateTimePickerを連携させることで、ユーザーが選択した日付に基づいて他のDateTimePickerの値を動的に変更することができます。

以下の例では、1つのDateTimePickerで選択した日付に応じて、別のDateTimePickerの初期値を設定します。

partial class MyForm : Form
{
    public MyForm()
    {
        InitializeComponent();
        
        // 1つ目のDateTimePickerのValueChangedイベントを設定
        dateTimePicker1.ValueChanged += DateTimePicker1_ValueChanged;
    }
    private void DateTimePicker1_ValueChanged(object sender, EventArgs e)
    {
        // 1つ目のDateTimePickerの選択日付に基づいて2つ目のDateTimePickerの初期値を設定
        dateTimePicker2.Value = dateTimePicker1.Value.AddDays(1); // 1日後を初期値に設定
    }
}

このコードを実行すると、最初のDateTimePickerで日付を選択すると、2つ目のDateTimePickerの初期値が自動的に変更されます。

これにより、ユーザーは関連する日付を簡単に選択できるようになります。

よくある質問

DateTimePickerで時間を選択することは可能ですか?

はい、DateTimePickerを使用して時間を選択することが可能です。

FormatプロパティをDateTimePickerFormat.Customに設定し、CustomFormatプロパティで日付と時間の表示形式を指定することで、ユーザーは日付と時間を同時に選択できます。

例えば、以下のように設定します。

dateTimePicker1.Format = DateTimePickerFormat.Custom;
dateTimePicker1.CustomFormat = "yyyy年MM月dd日 HH:mm"; // 日付と時間を表示

この設定により、ユーザーは日付と時間を選択できるカレンダーが表示されます。

DateTimePickerの初期値を設定するにはどうすればいいですか?

DateTimePickerの初期値は、Valueプロパティを使用して設定できます。

例えば、特定の日付を初期値として設定する場合、以下のように記述します。

dateTimePicker1.Value = new DateTime(2023, 10, 1); // 初期値を2023年10月1日に設定

このコードを実行すると、DateTimePickerは指定した日付を初期値として表示します。

ユーザーがアプリケーションを起動したときに、特定の日付を初期値として表示したい場合に便利です。

DateTimePickerのカレンダーを非表示にすることはできますか?

DateTimePickerのカレンダーを完全に非表示にすることはできませんが、Enabledプロパティをfalseに設定することで、ユーザーが日付を選択できないようにすることができます。

以下のように設定します。

dateTimePicker1.Enabled = false; // DateTimePickerを無効にする

この設定により、カレンダーは表示されますが、ユーザーは日付を選択できなくなります。

カレンダーを非表示にしたい場合は、代わりに他のUI要素を使用することを検討してください。

まとめ

この記事では、C#のDateTimePickerコントロールを使用してカレンダーを表示する方法について詳しく解説しました。

カレンダーの表示形式やイベント処理、カスタマイズの方法、さらには応用例として日付範囲の選択や時間の選択を含めた使い方についても触れました。

これらの知識を活用することで、ユーザーにとって使いやすい日付選択機能を持つアプリケーションを作成することが可能です。

ぜひ、実際のプロジェクトにこれらのテクニックを取り入れて、より良いユーザー体験を提供してみてください。

当サイトはリンクフリーです。出典元を明記していただければ、ご自由に引用していただいて構いません。

関連カテゴリーから探す

  • URLをコピーしました!
目次から探す