バージョン

AppointmentsDragging イベント

appointment または予定のグループはエンドユーザーによってドラッグされたときに発生されたイベント。
シンタックス
'宣言
 
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 プロパティは、ドラッグ操作が起動されているか、左ボタンの押下中にエンドユーザーがマウスを移動するのでドラッグが続行しているか、エンドユーザーがマウスを放したので確定するかどうかを識別します。イベントはどの段階でもキャンセルできます。その場合、ドラッグされた予定はドラッグ前の状態に戻ります。リスナーはこのイベントを次の目的に使用できます:

  • 予定を別の Owner にドラッグすることを防止する (AllowOwnerChange を参照してください)
  • ドラッグ操作時に予定のコピーを作成することを防止する ( AllowCopy を参照してください)
  • 「Beginning」段階のイベントをキャンセルして、コントロールの DoDragDrop メソッドを呼び出すことによって外部ドラッグ/ドロップ操作 (例えば、別のコントロールに予定をドラッグ) を開始します
  • ドラッグ操作のときに表示するカーソルを指定します (MoveCursorCopyCursor を参照してください)
  • 標準 .NET ドラッグ/ドロップ操作をトリガーします。

このイベントがキャンセルされない場合、ドラッグ操作の終わりに 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;                    
            }
        }
    }
参照