Private Sub UltraMonthViewSingle1_DayOfWeekHeaderClicked(ByVal sender As System.Object, ByVal e As Infragistics.Win.UltraWinSchedule.DayOfWeekHeaderClickedEventArgs) Handles ultraMonthViewSingle1.DayOfWeekHeaderClicked
'----------------------------------------------------------------------------------------------------
' 説明
' DayOfWeekHeaderClicked
'
' コントロールの DayOfWeek ヘッダーがクリックされたときに発生します
'
'----------------------------------------------------------------------------------------------------
' Ctrl キーが押されていない場合、既存の選択をクリアします
If (Control.ModifierKeys And Keys.Control) = 0 Then
Me.ultraMonthViewSingle1.CalendarInfo.SelectedDateRanges.Clear()
End If
' クリックしたヘッダーの曜日を取得します
Dim dow As System.DayOfWeek = e.DayOfWeek.DayOfTheWeek
' コントロールの最初の表示日から開始し、特定の曜日が
' 最初に表示日される日付を取得します
Dim tempDate As DateTime = Me.ultraMonthViewSingle1.FirstVisibleDay.Date
If dow = Me.ultraMonthViewSingle1.FirstVisibleDay.Date.DayOfWeek Then
Me.ultraMonthViewSingle1.FirstVisibleDay.Selected = True
End If
Dim i As Integer
For i = 0 To 6
tempDate = tempDate.AddDays(1)
If tempDate.DayOfWeek = dow Then Exit For
Next i
' その日付に Day オブジェクトを作成し、選択します
Dim day As Infragistics.Win.UltraWinSchedule.Day = Me.ultraMonthViewSingle1.CalendarInfo.GetDay(tempDate, True)
If Not day Is Nothing Then day.Selected = True
' 表示する週が 1 週のみの場合は完了です
If Me.ultraMonthViewSingle1.VisibleWeeks = 1 Then Return
' コントロールの VisibleWeeks プロパティを使用すると、
' 上記で選択した日付に週を追加することにより、特定の曜日になる
' 日をそれぞれ選択します
Dim weeks As Integer = Me.ultraMonthViewSingle1.VisibleWeeks - 1
For i = 0 To weeks - 1
tempDate = tempDate.AddDays(7)
day = Me.ultraMonthViewSingle1.CalendarInfo.GetDay(tempDate, True)
If Not day Is Nothing Then day.Selected = True
Next
End Sub