'宣言 Public Event AppointmentResizing As AppointmentResizingHandler
public event AppointmentResizingHandler AppointmentResizing
イベント ハンドラが、このイベントに関連するデータを含む、AppointmentResizingEventArgs 型の引数を受け取りました。次の AppointmentResizingEventArgs プロパティには、このイベントの固有の情報が記載されます。
プロパティ | 解説 |
---|---|
Appointment | サイズ変更操作が実行されている Appointment を返します。 |
Cancel System.ComponentModel.CancelEventArgsから継承されます。 | |
InitialDateTime Infragistics.Win.UltraWinSchedule.CancelableAppointmentDragEventArgsから継承されます。 | 操作が開始されたときにカーソルが上に配置される DateTime を返します。 |
NewDateTime Infragistics.Win.UltraWinSchedule.CancelableAppointmentDragEventArgsから継承されます。 | 現在カーソル位置に最も近い DateTime を返します。 |
Phase | このイベントの発生を表すサイズ変更操作の段階を決定します。つまり、サイズ変更操作が開始、実行、または終了されているかどうかを返します。 |
ResizeType | 関連付けられた予定の StartDateTime または EndDateTime がサイズ変更操作によって変更するかどうかを返します。 |
SelectionAction | サイズ変更操作が開始される時に、SelectedAppointments コレクションのコンテンツがどのように影響されるかを取得または設定します。 |
AppointmentsResizing イベントは予定サイズ変更操作のすべての段階でリスナーに通知します。Phase プロパティは、サイズ変更の操作が起動されているか、左ボタンの押下中にエンドユーザーがマウスを移動するのでドラッグが続行しているか、エンドユーザーがマウスを放したので確定するかどうかを識別します。イベントはどの段階でもキャンセルできます。その場合、サイズ変更された予定はドラッグ前の状態に戻ります。SelectionAction プロパティは、サイズ変更の操作開始時に既存予定の選択にどのように影響するかを決定します。例えば、既存の選択がクリアされる、保持される、またはサイズ変更された予定だけが選択されます。
このイベントがキャンセルされない場合、サイズ変更操作の終了時に AppointmentResized イベントが発生されます。
Imports System.Collections.Generic Imports Infragistics.Win Imports Infragistics.Win.UltraWinSchedule Imports System.Diagnostics AddHandler Me.dayView.AppointmentResizing, AddressOf OnAppointmentsResizing Private Sub OnAppointmentsResizing(ByVal sender As Object, ByVal e As AppointmentResizingEventArgs) Dim control As UltraDayView = sender If Not control Is Nothing Then ' Get the delta between the original drag point and the new one Dim span As TimeSpan = e.InitialDateTime.Subtract(e.NewDateTime) Dim delta As Int32 = Math.Abs(span.TotalMinutes) ' Access the change history from the Tag property Dim changeHistory As List(Of AppointmentChangeHistoryItem) = Nothing If e.Appointment.Tag Is Nothing Then e.Appointment.Tag = New List(Of AppointmentChangeHistoryItem) changeHistory = e.Appointment.Tag ' If the appointment's duration is being increased by more than one hour, ' add an entry to the change history If (e.Phase = AppointmentResizePhase.Ending AndAlso delta > 60) Then changeHistory.Add(New AppointmentChangeHistoryItem(DateTime.Now, e)) End If ' If the duration has been changed more than a certain number ' of times, cancel the event If e.Phase = AppointmentResizePhase.Beginning AndAlso changeHistory.Count > 5 Then e.Cancel = True MessageBox.Show("Access denied", "AppointmentsResizing", MessageBoxButtons.OK) End If ' Clear the selection when a new resize operation begins e.SelectionAction = AppointmentResizeSelectionAction.SelectOnlyThisAppointment End If End Sub Public Structure AppointmentChangeHistoryItem Public timeStamp As DateTime Public data As AppointmentResizingEventArgs Public Sub New(ByVal timeStamp As DateTime, ByVal data As AppointmentResizingEventArgs) Me.timeStamp = timeStamp Me.data = data End Sub End Structure
using System.Collections.Generic; using Infragistics.Win; using Infragistics.Win.UltraWinSchedule; using System.Diagnostics; this.dayView.AppointmentResizing += new AppointmentResizingHandler(OnAppointmentsResizing); private void OnAppointmentsResizing(object sender, AppointmentResizingEventArgs e) { UltraDayView control = sender as UltraDayView; if ( control != null ) { // Get the delta between the original drag point and the new one TimeSpan span = e.InitialDateTime.Subtract( e.NewDateTime ); int delta = (int)Math.Abs( span.TotalMinutes ); // Access the change history from the Tag property List<AppointmentChangeHistoryItem> changeHistory = null; if ( e.Appointment.Tag == null ) e.Appointment.Tag = new List<AppointmentChangeHistoryItem>(); changeHistory = e.Appointment.Tag as List<AppointmentChangeHistoryItem>; // If the appointment's duration is being increased by more than one hour, // add an entry to the change history if ( e.Phase == AppointmentResizePhase.Ending && delta > 60 ) changeHistory.Add( new AppointmentChangeHistoryItem(DateTime.Now, e) ); // If the duration has been changed more than a certain number // of times, cancel the event if ( e.Phase == AppointmentResizePhase.Beginning && changeHistory.Count > 5 ) { e.Cancel = true; MessageBox.Show( "Access denied", "AppointmentsResizing", MessageBoxButtons.OK ); } // Clear the selection when a new resize operation begins e.SelectionAction = AppointmentResizeSelectionAction.SelectOnlyThisAppointment; } } public struct AppointmentChangeHistoryItem { public DateTime timeStamp; public AppointmentResizingEventArgs data; public AppointmentChangeHistoryItem( DateTime timeStamp, AppointmentResizingEventArgs data ) { this.timeStamp = timeStamp; this.data = data; } }