5. 単一または複数の日付の選択を許可する
単一または複数の日付の選択を許可するにはSelectionModeプロパティを設定します。
SelectioMode プロパティには、CalendarSelectionMode列挙体を指定します。
| メンバー名 | 説明 |
| SingleDate | 単一の日付を選択できる |
| SingleRange | 単一の日付範囲を選択できる |
| MultipleRange | 複数の日付範囲を選択できる |
| None | 選択を許可しない |
下記は、4つのカレンダーコントロールにCalendarSelectionMode列挙体の値をそれぞれ設定する例です。

<Calendar Name="Calendar1" SelectionMode="SingleDate" /> <Calendar Name="Calendar2" SelectionMode="SingleRange" /> <Calendar Name="Calendar3" SelectionMode="MultipleRange" /> <Calendar Name="Calendar4" SelectionMode="None" />
Private Sub Window_Loaded(ByVal sender As System.Object,
ByVal e As System.Windows.RoutedEventArgs) Handles MyBase.Loaded
Calendar1.SelectionMode = CalendarSelectionMode.SingleDate '1つの日付を選択
Calendar2.SelectionMode = CalendarSelectionMode.SingleRange '1つの日付範囲を選択
Calendar3.SelectionMode = CalendarSelectionMode.MultipleRange '複数の日付範囲を選択
Calendar4.SelectionMode = CalendarSelectionMode.None '選択を許可しない
End Sub
private void Window_Loaded(object sender, RoutedEventArgs e)
{
calendar1.SelectionMode = CalendarSelectionMode.SingleDate; // 1つの日付を選択
calendar2.SelectionMode = CalendarSelectionMode.SingleRange; // 1つの日付範囲を選択
calendar3.SelectionMode = CalendarSelectionMode.MultipleRange; // 複数の日付範囲を選択
calendar4.SelectionMode = CalendarSelectionMode.None; // 選択を許可しない
}
単一または複数の日付の選択を許可するには SelectionMode プロパティを設定する。
6. 現在選択されている日付を取得する
現在選択されている日付を取得するには、SelectedDateプロパティまたはSelectedDatesプロパティを参照します。
単一の日付しか選択できないようにしている場合(SelectionMode プロパティがSingleDate)にはSelectedDateプロパティを、複数の日付が選択できるようにしている場合(SelectionMode プロパティがSingleRangeまたはMultipleRange)にはSelectedDatesプロパティを参照します。
下記は、複数の日付が選択できるようにしたCalendarコントロールで、選択された日付をメッセージボックスに表示する例です。

<!-- SelectionMode に MultipleRange を設定して複数の日付を選択できるようにする --> <Calendar SelectionMode="MultipleRange" />
Private Sub Button1_Click(ByVal sender As System.Object,
ByVal e As System.Windows.RoutedEventArgs) Handles Button1.Click
Dim selectedDate As String = ""
For I As Integer = 0 To Calendar1.SelectedDates.Count - 1
selectedDate &= Calendar1.SelectedDates(I).ToShortDateString() & ControlChars.CrLf
Next
MessageBox.Show(selectedDate)
End Sub
private void button1_Click(object sender, RoutedEventArgs e)
{
string selectedDate = "";
for ( int i = 0; i < calendar1.SelectedDates.Count; i++ )
{
selectedDate += calendar1.SelectedDates[i].ToShortDateString() + "\r\n";
}
MessageBox.Show(selectedDate);
}
現在選択されている日付を参照するにはSelectedDateプロパティかSelectedDatesプロパティを参照する。
