[WPF][Calendar] 複数の日付を選択および取得する方法

スポンサーリンク

概要

この記事では、WPFのCalendarコントロールにおいて、SelectedDatesプロパティを使用して複数の日付を選択し、それらの日付を取得する方法について説明します。

構文

SelectedDatesプロパティの使用方法は以下の通りです。XAMLコードで示します。

複数の日付の選択と取得をできるようにするには、SelectionMode に”MultipleRange” を指定します。

また、任意の日付を選択状態にするには、<Calendar.SelectedDates> の下に <System:DateTime>を置いて、日付を指定します。

<Calendar Name="calendar" SelectionMode="MultipleRange">
    <Calendar.SelectedDates>
        <System:DateTime>2023-10-19</System:DateTime>
        <System:DateTime>2023-10-20</System:DateTime>
    </Calendar.SelectedDates>
</Calendar>

使用例

以下は、XAMLとC#のコード例です。

XAMLではSelectedDateプロパティを使用して 2023年10月19日、2023年10月20日、2023年10月30日を選択します。また、Buttonコントロールを配置して、クリック時に selectedDateButton_Click イベントを発生させています。

<Window
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WpfSample"
        xmlns:System="clr-namespace:System;assembly=System.Runtime" x:Class="WpfSample.MainWindow"
        mc:Ignorable="d"
        Title="MainWindow" Height="300" Width="400">
    <StackPanel>
        <Calendar x:Name="calendar" SelectionMode="MultipleRange">
            <Calendar.SelectedDates>
                <System:DateTime>2023-10-19</System:DateTime>
                <System:DateTime>2023-10-20</System:DateTime>
                <System:DateTime>2023-10-30</System:DateTime>
            </Calendar.SelectedDates>

        </Calendar>
        <Button x:Name="selectedDateButton" Content="選択日付を取得" Click="selectedDateButton_Click" />
    </StackPanel>
</Window>

C#のコードでは selectedDateButton_Click を実装しています。

ここでは、現在選択されている日付(SelectedDates)を foreachですべて取得して連結し、メッセージボックスに表示します。

private void selectedDateButton_Click(object sender, RoutedEventArgs e)
{
    var msg = string.Empty;

    // SelectedDatesの値を取得
    foreach (DateTime selectedDate in calendar.SelectedDates)
    {
        msg += selectedDate.ToString("yyyy-MM-dd") + "\r\n";
    }
    // SelectedDateの値を取得
    MessageBox.Show("選択した日付: \r\n" + msg);
}
実行例

実行例

実行例

実行例

Please follow and like us:

コメント

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