リサイズはクリックかドラッグ

日付を選択不可としてマークする

このトピックでは、ドロップダウンカレンダーコントロールで、特定の日付範囲を選択不可としてマークする方法について解説します。

概要

例えばオンラインでの宿泊予約システムを考えた場合、チェックイン日をカレンダー上で選択する際、過去の日付(今日よりも前の日付)や既に予約が満杯の日付を、あらかじめ選択できないようにしたいかもしれません。

ドロップダウンカレンダーでは、特定の日付範囲を選択不可としてマークすることができます。選択不可としてマークされた日付には、グレー色の×印が描画され、カレンダー上からその日付を選択することができなくなります。

日付を選択不可としてマークした例
(図): 日付を選択不可としてマークした例
選択不可としてマークする日付の範囲を設定する

選択不可としてマークする日付の範囲を設定するには、BlackoutDates プロパティで参照される BlackoutDatesCollection オブジェクトを使用します。BlackoutDatesCollection オブジェクトに対して、選択不可としてマークする日付の範囲を設定することにより、カレンダーに反映されます

また、BlackoutDatesCollection オブジェクトの AddDatesInPast メソッドを呼び出すことにより、過去の日付をすべて選択不可としてマークすることができます。

以下のサンプルコードは、過去の日付および今日の日付から3日後~5日後を選択不可にします。カレンダー上の日付をクリックすると、選択された日付がカレンダーの下に表示されます。このとき、選択不可としてマークされた日付をクリックすると、選択された日付が表示されない(選択された日付として null が返される)ことに注目してください。

using GrapeCity.Windows.InputMan;

// 過去の日付を選択不可としてマークします。
GcDropDownCalendar1.BlackoutDates.AddDatesInPast();

// 今日の日付から3日後~5日後を選択不可としてマークします。
var range = new CalendarDateRange(DateTime.Now.AddDays(3), DateTime.Now.AddDays(5));
GcDropDownCalendar1.BlackoutDates.Add(range);

private void GcDropDownCalendar1_SelectedDatesChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e)
{
    // 選択された日付を TextBlock1 に表示します。
    TextBlock1.Text = "選択された日付:" + GcDropDownCalendar1.SelectedDate.ToString();
}
参照