画面と大まかな説明は前回の日記を見ていただくとしてまずは動作的なとこを。
上部の 4つのボタンは左から「1年前」、「1ヶ月前」、「1ヶ月後」、「1年後」を表示するボタンです。
各 ボタンをクリックすると 表示する月の初日(1日)が MinDate と MaxDate の範囲内であれば表示月が変わります。
「1年前」と「1年後」の場合、MinDate と MaxDate の範囲外になる時は MinDate または MaxDate の月が表示されます。
日付のセルは MinDate と MaxDate の範囲内であればクリックするとその日が選択日となります。
表示月以外の日付が選択された場合は表示月が変わります。
関連するクラスとその主なメンバです。
DayCell クラス(日付のセルを表すクラスで IDisposable, IEquatable(Of DayCell) インターフェイスを実装してます)
○パブリックプロパティ
Public Property BackColor() As Color 'セルの背景色を取得または設定
Public Property Date() As Date 'セルの日付を取得または設定
Public Property ForeColor() As Color '日付のテキストの色を取得または設定
○パブリックメソッド
Public Overloads Sub Dispose() Implements IDisposable.Dispose 'リソースを解放
Public Overloads Function Equals(ByVal other As DayCell) As Boolean Implements IEquatable(Of DayCell).Equals '指定した DayCell のラベルと日付が現在の DayCell と等しいかどうか
Public Shared Function NewCell(ByVal Date As Date, ByVal FontSize As Single) As DayCell '日付とフォントサイズを指定して DayCell を作成
Public Overloads Sub SetStyle(ByVal Style As FontStyle) '日付スタイルを設定
Public Overloads Sub SetStyle(ByVal Style As FontStyle, ByVal ForeColor As Color, ByVal CellColor As Color)
Public Overloads Sub SetStyle(ByVal FontSize As Single, ByVal Style As FontStyle, ByVal ForeColor As Color, ByVal CellColor As Color)
○プロテクトメソッド
Protected Overridable Overloads Sub Dispose(ByVal disposing As Boolean) 'お決まりということで
Protected Overrides Sub Finalize() 'お決まりということで
DayCellCollection クラス(DayCell のコレクションを表すクラスで CollectionBase クラスから継承されてます)
○パブリックプロパティ
Default Public ReadOnly Property Item(ByVal Index As Integer) As DayCell '指定したインデックスにある DayCell を取得
○パブリックメソッド
Public Function Add(ByVal Item As DayCell) As Integer '指定した DayCell をコレクションの末尾に追加
Public Sub AddRange(ByVal Items() As DayCell) '指定した DayCell の配列をコレクションの末尾に追加
Public Function FindByDate(ByVal Date As Date) As DayCell '指定した日付を格納している DayCell を検索
DayCellEventArgs クラス(DayCell のイベントデータを提供するクラスで EventArgs クラスから継承されてます)
○パブリックコンストラクタ
Public Sub New(ByVal Cell As DayCell) '日付のセルを指定して DayCellEventArgs クラスの新しいインスタンスを初期化
○パブリックプロパティ
Public ReadOnly Property Cell() As DayCell '日付のセルを取得
デリゲート
Public Delegate Sub DayRenderEventHandler(ByVal sender As Object, ByVal e As DayCellEventArgs) 'カレンダーの DayRender イベントを処理するメソッド
Public Delegate Sub SelectedDateChangedEventHandler(ByVal sender As Object, ByVal e As DayCellEventArgs) 'カレンダーの SelectedDateChanged イベントを処理するメソッド
Calendar クラスとその主なメンバです。(前回の日記に書いたものとデザイナで設定できるものは載せてません)
UserControl クラスから継承されてます。
○パブリックプロパティ
Public ReadOnly Property DisplayMonthFirstDate() As Date '表示月の初日(1 日の日付)を取得
Public ReadOnly Property NextMonthCells() As DayCellCollection '翌月の日付のセルのコレクションを取得
Public ReadOnly Property PreviousMonthCells() As DayCellCollection '前月の日の付セルのコレクションを取得
Public ReadOnly Property ThisMonthCells() As DayCellCollection '今月の日付のセルのコレクションを取得
○パブリックイベント
Public Event DayRender As DayRenderEventHandler '日付のセルが描画されると発生
Public Event DisplayMonthChanged As EventHandler '表示する月が変更された場合に発生
Public Event DisplayMonthChanging As CancelEventHandler '表示する月が変更さようとしている場合に発生
Public Event SelectedDateChanged As SelectedDateChangedEventHandler '選択された日付が変更された場合に発生
Public Event SelectedDateChanging As CancelEventHandler '選択された日付が変更さようとしている場合に発生
○プロテクトメソッド
Protected Overridable Sub OnDayRender(ByVal e As DayCellEventArgs) 'DayRender イベントを発生させる
Protected Overridable Sub OnDisplayMonthChanged(ByVal e As EventArgs) 'DisplayMonthChanged イベントを発生させる
Protected Overridable Sub OnDisplayMonthChanging(ByVal e As CancelEventArgs) 'DisplayMonthChanging イベントを発生させる
Protected Overridable Sub OnSelectedDateChanged(ByVal e As DayCellEventArgs) 'SelectedDateChanged イベントを発生させる
Protected Overridable Sub OnSelectedDateChanging(ByVal e As CancelEventArgs) 'SelectedDateChanging イベントを発生させる
Protected Overridable Sub ResetSelectedDate() 'SelectedDate プロパティを既定値に戻す
ひとまずこんな感じです。