C# 日付を選択する(MonthCalendar)

      2017/07/04

Visual Studioの標準フォームデザイナで「日付」を入力するコントロールは、DateTimePickerとMonthCalendar(どちらもSystem.Windows.Forms名前空間)という2つのコントロールがあります。

今回はこのうちのMonthCalenderの基本を紹介します。

 

MonthCalendarとは

MonthCalendarは、MSDNでは、「ユーザーがビジュアルな月間予定表を使用して日付を選択できる Windows コントロールを表します。」となっています。

画面に表示されるのは、”カレンダー”で、日付を選択することができるコントロールです。

「日付を選択する」といっても、1日だけ選択することもできますが、「日付の範囲」を選択できます。

 

とりあえず動かす

Windowsフォームアプリケーションのプロジェクトを作成して、フォームにMonthCalendarコントロールを1つ配置します。

 

まずは、これだけでビルド・起動をしてみましょう。

カレンダー(MonthCalendar)で現在選択されている日付からドラッグすると、一週間前、一週間後までは選択できるのですが、そこから先は選択できません。

ですが、これはMaxSelectionCountプロパティの初期値が’7’で、7日間しか選択できない設定になっているからです。

MaxSelectionCountプロパティを変更すると、選択できる日付の範囲を変更することができます。

 

DateChangedイベントとDateSelectedイベント

このMonthCalendarには、DateChangedイベントとDateSelectedイベントという2つのイベントがあります。

この2つのイベントの違いは、

DateChangedイベント 選択した日付が変更した時に発生するイベント
DateSelectedイベント 選択した日付の範囲が選択された時に発生するイベント

 

です。・・・といっても、ピンとこないと思います。

コントロールの動作でいうと、下記のようなイメージです。

DateChangedイベント MouseDownイベントと同じような動作
DateSelectedイベント MouseUpイベントと同じような動作

 

フォームに追加したMonthCalendarコントロールの名前がmonthCalendar1として、下記のサンプルでイベント、イベントハンドラを追加してビルド・実行してみてください。

 

この2つのイベントの第二引数は、同じDateRangeEventArgsクラスというクラスです。
選択された日付は、このDateRangeEventArgsのStartプロパティ(開始日)、Endプロパティ(終了日)からDateTime型で取得できます。
この時のStartプロパティ、Endプロパティの時刻は、Startプロパティが0:00:00、Endプロパティが23:59:59になります。

 

 - 未分類