'宣言 Public ReadOnly Property SelectedDateTimeRange As DateTimeRange
public DateTimeRange SelectedDateTimeRange {get;}
日付および時刻の不連続の選択を対応しません。開発者が日付/時刻の選択方式を変更できるためのプロパティは存在しません。
日付および時刻の不連続の選択を対応しませんので、1 つのオブジェクトは完全に現在の選択を表すことができます。SelectedDateTimeRange プロパティは複数の日を及べる範囲の開始および終了を返します。
SelectDateTimeRange メソッドを呼び出すことによって、日付/時刻の選択を動的に変更できます。ClearSelectedDateTimeRange メソッドを呼び出すことによって、クリアできます。
注: SelectedDateTimeRange をクリアしたとき後に、範囲を明示的に設定するまでこのプロパティは null を返しますClearSelectedDateTimeRange メソッドを呼び出すことによって日付/時刻の選択を動的にクリアできます。または、ユーザーは Appointment または Holiday を選択することまたはヘッダーのクリックによって Owner をアクティブ化することによって、クリアします。
SelectedDateTimeRange プロパティはランタイムに限って使用できます。デフォルト値は null です。ユーザーが範囲を選択したときまたは値を動的に設定したときまで日付/時刻選択を描画しません。
Imports System.Collections.Generic Imports Infragistics.Win Imports Infragistics.Win.UltraWinSchedule Imports System.Diagnostics Public Sub SelectDateTimeRange(ByVal control As UltraTimelineView, ByVal range As DateTimeRange) ' Handle the SelectedDateTimeRangeChanging event RemoveHandler control.SelectedDateTimeRangeChanging, AddressOf Me.OnSelectedDateTimeRangeChanging AddHandler control.SelectedDateTimeRangeChanging, AddressOf Me.OnSelectedDateTimeRangeChanging ' If the caller did not specify a range, use the default, ' i.e., the working hour range of the current day. If range Is Nothing Then Dim calendarInfo As UltraCalendarInfo = control.CalendarInfo Dim dow As Infragistics.Win.UltraWinSchedule.DayOfWeek = calendarInfo.DaysOfWeek(DateTime.Today.DayOfWeek) Dim start As DateTime = DateTime.Today.Add(dow.WorkDayStartTime.TimeOfDay) Dim _end As DateTime = DateTime.Today.Add(dow.WorkDayEndTime.TimeOfDay).AddSeconds(-1) range = New DateTimeRange(start, _end) End If ' Select the range programmatically control.SelectDateTimeRange(range.StartDateTime, range.EndDateTime) End Sub Private Sub OnSelectedDateTimeRangeChanging(ByVal sender As Object, ByVal e As SelectedDateTimeRangeChangingEventArgs) ' If no listeners have canceled the SelectedDateTimeRangeChanging ' event, hook the SelectedDateTimeRangeChanged event so we get a ' notification after it has changed. If e.Cancel = False Then Dim control As UltraTimelineView = sender AddHandler control.SelectedDateTimeRangeChanged, AddressOf Me.OnSelectedDateTimeRangeChanged End If End Sub Private Sub OnSelectedDateTimeRangeChanged(ByVal sender As Object, ByVal e As SelectedDateTimeRangeChangedEventArgs) ' Format the selected date/time range and set the text ' of the label control that is used to display it. ' Adjust the end time if the PrimaryInterval is a TimeInterval, ' so that instead of '9AM - 9:59AM', the user sees '9AM - 10AM'. Dim control As UltraTimelineView = sender Dim adjustEndTime As Boolean = (control.PrimaryInterval.GetType() Is GetType(TimeInterval)) Me.lblSelectedRange.Text = DateTimeRange.Format(e.Range.StartDateTime, e.Range.EndDateTime, DateTimeRange.Separator, adjustEndTime) ' Detach the event handler RemoveHandler control.SelectedDateTimeRangeChanged, AddressOf Me.OnSelectedDateTimeRangeChanged End Sub
using System.Collections.Generic; using Infragistics.Win; using Infragistics.Win.UltraWinSchedule; using System.Diagnostics; public void SelectDateTimeRange( UltraTimelineView control, DateTimeRange range ) { // Handle the SelectedDateTimeRangeChanging event control.SelectedDateTimeRangeChanging -= new SelectedDateTimeRangeChangingHandler(this.OnSelectedDateTimeRangeChanging); control.SelectedDateTimeRangeChanging += new SelectedDateTimeRangeChangingHandler(this.OnSelectedDateTimeRangeChanging); // If the caller did not specify a range, use the default, // i.e., the working hour range of the current day. if ( range == null ) { UltraCalendarInfo calendarInfo = control.CalendarInfo; Infragistics.Win.UltraWinSchedule.DayOfWeek dow = calendarInfo.DaysOfWeek[DateTime.Today.DayOfWeek]; DateTime start = DateTime.Today.Add( dow.WorkDayStartTime.TimeOfDay ); DateTime end = DateTime.Today.Add( dow.WorkDayEndTime.TimeOfDay ).AddSeconds( -1 ); range = new DateTimeRange( start, end ); } // Select the range programmatically control.SelectDateTimeRange( range.StartDateTime, range.EndDateTime ); } private void OnSelectedDateTimeRangeChanging(object sender, SelectedDateTimeRangeChangingEventArgs e) { // If no listeners have canceled the SelectedDateTimeRangeChanging // event, hook the SelectedDateTimeRangeChanged event so we get a // notification after it has changed. if ( e.Cancel == false ) { UltraTimelineView control = sender as UltraTimelineView; control.SelectedDateTimeRangeChanged += new SelectedDateTimeRangeChangedHandler(this.OnSelectedDateTimeRangeChanged); } } private void OnSelectedDateTimeRangeChanged(object sender, SelectedDateTimeRangeChangedEventArgs e) { // Format the selected date/time range and set the text // of the label control that is used to display it. // Adjust the end time if the PrimaryInterval is a TimeInterval, // so that instead of '9AM - 9:59AM', the user sees '9AM - 10AM'. UltraTimelineView control = sender as UltraTimelineView; bool adjustEndTime = control.PrimaryInterval is TimeInterval; this.lblSelectedRange.Text = DateTimeRange.Format( e.Range.StartDateTime, e.Range.EndDateTime, DateTimeRange.Separator, adjustEndTime ); // Detach the event handler control.SelectedDateTimeRangeChanged -= new SelectedDateTimeRangeChangedHandler(this.OnSelectedDateTimeRangeChanged); }