FirstVisibleDay プロパティはランタイムに限って使用でき、読み取り専用です。コントロールの現在の一番上の左の日を表す Day オブジェクトを返すために役に立ちます。
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
using Infragistics.Win; using Infragistics.Win.UltraWinSchedule; using Infragistics.Win.UltraWinSchedule.MonthViewSingle; using System.Diagnostics; private Infragistics.Win.UltraWinSchedule.Day GetLastVisibleDay() { // 指定したコントロールは null 値、破棄されているか、破棄された場合、 // null 値を返します // if ( this.ultraMonthViewSingle1 == null || this.ultraMonthViewSingle1.Disposing || this.ultraMonthViewSingle1.IsDisposed ) return null; // FirstVisibleDay プロパティが null 値の場合、続けることができないため、null 値を返します if ( this.ultraMonthViewSingle1.FirstVisibleDay == null ) return null; DateTime lastDay; // 週に表示日が1 日のみの場合、 // FirstVisibleDay の日付に週を追加すると、最後の表示日を決定できます // 追加する週の数は VisibleWeeks プロパティの値から // 1 を引くと、週の数になります if ( this.GetNumberOfVisibleDaysOfWeek() == 1 ) { // 表示週が 1 週のみで、表示日も 1 日のみの場合、 // 最後の表示日は最初の表示日と同じです // FirstVisibleDay を返します if ( this.ultraMonthViewSingle1.VisibleWeeks == 1 ) return this.ultraMonthViewSingle1.FirstVisibleDay; // FirstVisibleDay の日付に週を追加します lastDay = this.ultraMonthViewSingle1.FirstVisibleDay.Date.AddDays( (double)( (this.ultraMonthViewSingle1.VisibleWeeks - 1) * 7 ) ); // Day オブジェクトを作成して、それを返します。Day オブジェクトを作成することを // 確認するために、createlfNull パラメーターに True を渡すことに注意します return this.ultraMonthViewSingle1.CalendarInfo.GetDay( lastDay, true ); } // コントロールの最初の表示日の日付を取得します DateTime firstDay = this.ultraMonthViewSingle1.FirstVisibleDay.Date; // コントロールの最初の曜日を決定します System.DayOfWeek dayOfWeek = firstDay.DayOfWeek; // コントロールの最後の表示可能な曜日の DayOfWeek を決定します // // 最初の表示日の 1 つの週の後の日で開始して、 // 対応する DayOfWeek オブジェクトが表示される日が見つかるまで // 前の日へ移動します lastDay = firstDay.AddDays( 7.0F ); for ( int i = 1; i < 7; i ++ ) { lastDay = lastDay.AddDays( (double)( -1 ) ); if ( this.ultraMonthViewSingle1.CalendarInfo.DaysOfWeek[ lastDay.DayOfWeek ].Visible ) break; } // 最初の表示日と同じ週にある最後の表示日の日付を決定したため、 // コントロールで表示される最後の日を決定するには、 // その日付に週を追加します lastDay = lastDay.AddDays( (double)( (this.ultraMonthViewSingle1.VisibleWeeks - 1) * 7 ) ); // Day オブジェクトを作成して、それを返します。Day オブジェクトを作成することを // 確認するために、createlfNull パラメーターに True を渡すことに注意します return this.ultraMonthViewSingle1.CalendarInfo.GetDay( lastDay, true ); } private int GetNumberOfVisibleDaysOfWeek() { //-------------------------------------------------------------------------------- // // コントロールで表示される曜日の数を返します // //-------------------------------------------------------------------------------- // 指定したコントロールは null 値、破棄されているか、破棄された場合、 // 0 を返します // if ( this.ultraMonthViewSingle1 == null || this.ultraMonthViewSingle1.Disposing || this.ultraMonthViewSingle1.IsDisposed ) return 0; // CalendarInfo オブジェクトの DaysOfWeek コレクションを繰り返して、 // その Visible プロパティが True の DayOfWeek を検索する場合、 // カウンターを増加します int count = 0; foreach( Infragistics.Win.UltraWinSchedule.DayOfWeek dayOfWeek in this.ultraMonthViewSingle1.CalendarInfo.DaysOfWeek ) { if ( dayOfWeek.Visible ) count ++; } // 表示される DayOfWeek オブジェクトの合計を返します return count; }