Imports Infragistics.Win
Imports Infragistics.Win.UltraWinSchedule
Imports Infragistics.Win.UltraWinSchedule.MonthViewSingle
Private Function GetLastVisibleDay() As Infragistics.Win.UltraWinSchedule.Day
' 指定したコントロールは null 値、破棄されているか、破棄された場合、
' Nothing を返します
'
If Me.ultraMonthViewSingle1 Is Nothing Or Me.ultraMonthViewSingle1.Disposing Or Me.ultraMonthViewSingle1.IsDisposed Then Return Nothing
' FirstVisibleDay プロパティが null 値の場合、続けることができないため、Nothing を返します
If Me.ultraMonthViewSingle1.FirstVisibleDay Is Nothing Then Return Nothing
Dim lastDay As DateTime
' 週に 1 つのみの表示日がある場合、
' FirstVisibleDay の日付に週を追加すると、最後の表示日を決定できます
' 追加する週の数は VisibleWeeks プロパティの値から
' 1 を引くと、週の数です
If Me.GetNumberOfVisibleDaysOfWeek() = 1 Then
' 表示週の 1 つのみがあって、表示日の 1 つのみがある場合、
' 最後の表示日は最初の表示日と同じです
' FirstVisibleDay を返します
If Me.ultraMonthViewSingle1.VisibleWeeks = 1 Then Return Me.ultraMonthViewSingle1.FirstVisibleDay
' FirstVisibleDay の日付に週を追加します
lastDay = Me.ultraMonthViewSingle1.FirstVisibleDay.Date.AddDays((Me.ultraMonthViewSingle1.VisibleWeeks - 1) * 7)
' Day オブジェクトを作成して、それを返します。Day オブジェクトを作成することを
' 確認するために、createlfNull パラメーターに True を渡すことに注意します
Return Me.ultraMonthViewSingle1.CalendarInfo.GetDay(lastDay, True)
End If
' コントロールの最初の表示日の日付を取得します
Dim firstDay As DateTime = Me.ultraMonthViewSingle1.FirstVisibleDay.Date
' コントロールの最初の曜日を決定します
Dim dayOfWeek As System.DayOfWeek = firstDay.DayOfWeek
' コントロールの最後の表示可能な曜日の DayOfWeek を決定します
'
' 最初の表示日の 1 つの週の後の日で開始して、
' 対応する DayOfWeek オブジェクトが表示される日を検索するまでに
' 以前の日に移動します
lastDay = firstDay.AddDays(7)
Dim i As Integer
For i = 1 To 6
lastDay = lastDay.AddDays(-1)
If Me.ultraMonthViewSingle1.CalendarInfo.DaysOfWeek(lastDay.DayOfWeek).Visible Then Exit For
Next
' 最初の表示日と同じ週にある最後の表示日の日付を決定したので、
' コントロールで表示される最後の日を決定するには、
' その日付に週を追加します
lastDay = lastDay.AddDays((Me.ultraMonthViewSingle1.VisibleWeeks - 1) * 7)
' Day オブジェクトを作成して、それを返します。Day オブジェクトを作成することを
' 確認するために、createlfNull パラメーターに True を渡すことに注意します
Return Me.ultraMonthViewSingle1.CalendarInfo.GetDay(lastDay, True)
End Function
Private Function GetNumberOfVisibleDaysOfWeek() As Integer
'--------------------------------------------------------------------------------
' コントロールで表示される曜日の数を返します
'--------------------------------------------------------------------------------
' 指定したコントロールは null 値、破棄されているか、破棄された場合、
' 0 を返します
'
If Me.ultraMonthViewSingle1 Is Nothing Or Me.ultraMonthViewSingle1.Disposing Or Me.ultraMonthViewSingle1.IsDisposed Then Return 0
' CalendarInfo オブジェクトの DaysOfWeek コレクションを繰り返して、
' その Visible プロパティが True の DayOfWeek を検索する場合、
' カウンターを増加します
Dim count As Integer = 0
Dim dayOfWeek As Infragistics.Win.UltraWinSchedule.DayOfWeek
For Each dayOfWeek In Me.ultraMonthViewSingle1.CalendarInfo.DaysOfWeek
If dayOfWeek.Visible Then count += 1
Next
' 表示される DayOfWeek オブジェクトの合計を返します
Return count
End Function