このトピックでは、日付の選択モードを設定する方法と、選択された日付を取得する方法について解説します。
GcDropDownCalendar コントロールには、日付の選択方法として、1つの日付だけを選択する単一選択と、複数の日付を選択する複数選択の2種類があります。これらの選択方法は、SelectionMode プロパティで指定します。
設定値 | 説明 |
---|---|
CalendarSelectionMode.SingleDate | 単一の日付を選択できます。 |
CalendarSelectionMode.SingleRange | 単一の日付範囲を選択できます。 |
CalendarSelectionMode.MultipleRange | 複数の日付範囲を選択できます。 |
CalendarSelectionMode.None | 日付を選択することはできません。 |
また、選択可能な日付の種類は、AllowSelection プロパティで設定します。
設定値 | 説明 |
---|---|
AllowSelection.AnyDay | すべての日付が選択できます。 |
AllowSelection.Workday | 営業日のみ選択できます。 |
AllowSelection.Holiday | 休日および休業日のみ選択できます。 |
日付選択の操作は、目的の日付をマウスでクリックするか、または矢印キーでフォーカス枠を移動し、[Space]または[Enter]キーを押して行います。また、SelectionMode プロパティを CalendarSelectionMode.SingleRange あるいは CalendarSelectionMode.MultipleRange に設定した場合は、[Ctrl] キーや [Shif]t キーを使って日付範囲を選択できます。
マウスやキーボードの操作で選択された日付は、選択モードの違いによって SelectedDate プロパティあるいは SelectedDates プロパティを使い分けて取得します。
SelectedDate プロパティは、単一の日付を選択した場合はその日付を、複数の日付を選択した場合はそれらの日付の中で最も小さい日付を返します。また、SelectedDates プロパティが返すコレクションには、選択された日付が格納されます。
SelectionMode プロパティが CalendarSelectionMode.SingleDate の場合は SelectedDate プロパティを、CalendarSelectionMode.SingleRange あるいは CalendarSelectionMode.MultipleRange の場合は SelectedDates プロパティを使用して、特定の日付あるいは日付範囲をコード上から選択状態にすることができます。
SelectionMode プロパティが CalendarSelectionMode.SingleDate の場合、SelectedDates プロパティを使用して日付を選択することはできません。 また、選択不可としてマークされている日付を SelectedDate プロパティもしくは SelectedDates プロパティを使用して選択することはできません。 |
以下のサンプルコードは、単一の日付範囲選択を可能にして、2010/09/15〜2010/09/18 までを選択範囲に含めます。
GcDropDownCalendar1.SelectionMode = CalendarSelectionMode.SingleRange GcDropDownCalendar1.SelectedDates.AddRange(New DateTime(2010, 9, 15), New DateTime(2010, 9, 18))
GcDropDownCalendar1.SelectionMode = CalendarSelectionMode.SingleRange; GcDropDownCalendar1.SelectedDates.AddRange(new DateTime(2010, 9, 15), new DateTime(2010, 9, 18));
直前に選択されていた日付とは異なる日付が選択されたときには、単一選択モードと複数選択モードの両方でSelectedDatesChanged イベントが発生します。また、フォーカス枠を移動したときには、FocusedDateChanged イベントが発生します。
また、カレンダー上の日付をクリックしたときには ClickDate イベントが、ダブルクリックした場合は DoubleClickDate イベントが発生します。
以下のサンプルコードは、複数選択モードで選択された日付をリストボックスに表示します。
Private Sub GcDropDownCalendar1_SelectedDatesChanged(ByVal sender As System.Object, ByVal e As System.Windows.Controls.SelectionChangedEventArgs) ' リストボックスをクリアします。 ListBox1.Items.Clear() ' 選択された日付をリストボックスに表示します。 For Each aDay As DateTime In GcDropDownCalendar1.SelectedDates ListBox1.Items.Add(aDay.ToShortDateString()) Next End Sub
private void GcDropDownCalendar1_SelectedDatesChanged(object sender, SelectionChangedEventArgs e) { // リストボックスをクリアします。 ListBox1.Items.Clear(); // 選択された日付をリストボックスに表示します。 foreach(DateTime aDay in GcDropDownCalendar1.SelectedDates) ListBox1.Items.Add(aDay.ToShortDateString()); }
<!-- VB、C#とも、以下のコードをページ内に記述してください --> <StackPanel> <im:GcDropDownCalendar Name="GcDropDownCalendar1" SelectionMode="MultipleRange" SelectedDatesChanged="GcDropDownCalendar1_SelectedDatesChanged" /> <ListBox Name="ListBox1" /> </StackPanel>