'宣言 Public Event AppointmentsDragging As AppointmentsDraggingHandler
public event AppointmentsDraggingHandler AppointmentsDragging
イベント ハンドラが、このイベントに関連するデータを含む、AppointmentsDraggingEventArgs 型の引数を受け取りました。次の AppointmentsDraggingEventArgs プロパティには、このイベントの固有の情報が記載されます。
プロパティ | 解説 |
---|---|
AllowCopy | ドラッグ操作中に appointment(s) のコピーを作成できるかどうかを取得または設定します。 |
AllowOwnerChange | appointment(s) をドラッグ操作が開始された Owner と違う にドラッグできるかどうかを取得または設定します。 |
Appointments | ドラッグされている appointments の読み取り専用のコレクションを返します。 |
Cancel System.ComponentModel.CancelEventArgsから継承されます。 | |
CopyCursor | ドラッグされた項目をコピーするドラッグ操作のときに表示された cursor を取得または設定します |
HasCopies | コピーされた Appointment が現在のドラッグ操作に含まれるかどうかを示すブール値を返します。 |
InitialDateTime Infragistics.Win.UltraWinSchedule.CancelableAppointmentDragEventArgsから継承されます。 | 操作が開始されたときにカーソルが上に配置される DateTime を返します。 |
InitialOwner | ドラッグ操作が開始された時に appointment(s) の Owner を返します。 |
MoveCursor | 項目をコピーしないで移動するドラッグ操作の時に表示された cursor を取得または設定します |
NewDateTime Infragistics.Win.UltraWinSchedule.CancelableAppointmentDragEventArgsから継承されます。 | 現在カーソル位置に最も近い DateTime を返します。 |
NewOwner | 現在のカーソル位置に基づいて appointment(s) の新しい Owner を返します。 |
Phase | このイベントの発生を表すドラッグ操作の段階を決定します。つまり、ドラッグ操作が開始、実行、または終了されているかどうかを返します。 |
AppointmentsDragging イベントは予定ドラッグ操作のすべての段階でリスナーに通知します。Phase プロパティは、ドラッグ操作が起動されているか、左ボタンの押下中にエンドユーザーがマウスを移動するのでドラッグが続行しているか、エンドユーザーがマウスを放したので確定するかどうかを識別します。イベントはどの段階でもキャンセルできます。その場合、ドラッグされた予定はドラッグ前の状態に戻ります。リスナーはこのイベントを次の目的に使用できます:
このイベントがキャンセルされない場合、ドラッグ操作の終わりに AppointmentsDragDrop イベントが発生されます。
AppointmentsDragging イベントをキャンセルすると他のコントロールで予定をドラッグできます。そして、予定がドラッグされているスケジュール コントロールで DoDragDrop メソッドを呼び出します。このケースにあるドロップ ターゲット コントロールは、AllowDrop property プロパティが True に設定されることに注意してください。開発者は、データを処理する DragDrop イベントに対処する必要があります。
Imports Infragistics.Win Imports Infragistics.Win.UltraWinSchedule Imports System.Diagnostics AddHandler Me.monthViewSingle.AppointmentsDragging, AddressOf OnAppointmentsDragging Private Sub OnAppointmentsDragging(ByVal sender As Object, ByVal e As AppointmentsDraggingEventArgs) ' Get a reference to the schedule control and the associated UltraCalendarInfo Dim control As UltraScheduleControlBase = sender Dim calendarInfo As UltraCalendarInfo = control.CalendarInfo ' Disallow copying of appointments this prevents copies of the ' dragged appointments from being made when the user presses the ' Control key. e.AllowCopy = False ' Disallow dragging the appointments to the unassigned owner, ' if they originally belonged to a different owner. If (Not (e.NewOwner Is e.InitialOwner) AndAlso e.NewOwner.IsUnassigned) Then e.AllowOwnerChange = False End If ' If the delta between the initial date and the new date is more ' than seven days, prompt the user to make sure they want to continue. ' ' To avoid stealing capture (and thus terminating the drag operation), ' we can only do this during the final phase of the drag operation, ' so check e.Phase to make sure that is the case. If e.Phase = AppointmentDragPhase.Ending Then Dim span As TimeSpan = e.NewDateTime.Date.Subtract(e.InitialDateTime.Date) Dim delta As Int32 = Math.Abs(span.TotalDays) If (delta > 7.0F) Then Dim sb As StringBuilder = New StringBuilder() sb.AppendLine("The following appointment(s) are being dragged by more than seven days from their initial start time(s):") sb.AppendLine(Environment.NewLine) Dim appointment As Appointment For Each appointment In e.Appointments sb.AppendLine(String.Format("{0} ({1})", appointment.Subject, appointment.StartDateTime.ToShortDateString())) Next sb.AppendLine(Environment.NewLine) sb.AppendLine("Do you want to move the appointment(s)?") Dim result As DialogResult = MessageBox.Show(sb.ToString(), "AppointmentsDragging", MessageBoxButtons.YesNo) If (result = System.Windows.Forms.DialogResult.No) Then e.Cancel = True End If End If End Sub
using Infragistics.Win; using Infragistics.Win.UltraWinSchedule; using System.Diagnostics; this.monthViewSingle.AppointmentsDragging += new AppointmentsDraggingHandler(OnAppointmentsDragging); private void OnAppointmentsDragging(object sender, AppointmentsDraggingEventArgs e) { // Get a reference to the schedule control and the associated UltraCalendarInfo UltraScheduleControlBase control = sender as UltraScheduleControlBase; UltraCalendarInfo calendarInfo = control.CalendarInfo; // Disallow copying of appointments; this prevents copies of the // dragged appointments from being made when the user presses the // Control key. e.AllowCopy = false; // Disallow dragging the appointments to the unassigned owner, // if they originally belonged to a different owner. if ( e.NewOwner != e.InitialOwner && e.NewOwner.IsUnassigned ) e.AllowOwnerChange = false; // If the delta between the initial date and the new date is more // than seven days, prompt the user to make sure they want to continue. // // To avoid stealing capture (and thus terminating the drag operation), // we can only do this during the final phase of the drag operation, // so check e.Phase to make sure that is the case. if ( e.Phase == AppointmentDragPhase.Ending ) { TimeSpan span = e.NewDateTime.Date.Subtract( e.InitialDateTime.Date ); int delta = (int)Math.Abs(span.TotalDays); if ( delta > 7f ) { StringBuilder sb = new StringBuilder(); sb.AppendLine( "The following appointment(s) are being dragged by more than seven days from their initial start time(s):" ); sb.AppendLine( Environment.NewLine ); foreach( Appointment appointment in e.Appointments ) { sb.AppendLine( string.Format("{0} ({1})", appointment.Subject, appointment.StartDateTime.ToShortDateString()) ); } sb.AppendLine( Environment.NewLine ); sb.AppendLine( "Do you want to move the appointment(s)?" ); DialogResult result = MessageBox.Show( sb.ToString(), "AppointmentsDragging", MessageBoxButtons.YesNo ); if ( result == DialogResult.No ) e.Cancel = true; } } }