バージョン

IsSameAppointment メソッド

指定した予定が同じ論理的な Appointment を表す場合、True を返します。
シンタックス
'宣言
 
Public Function IsSameAppointment( _
   ByVal appointment As Appointment _
) As Boolean
public bool IsSameAppointment( 
   Appointment appointment
)

パラメータ

appointment
チェックする予定。

戻り値の型

予定が同じ場合、または両者が同じ RecurringAppointmentRootOriginalStartDateTime を持つ場合 True を返します。
解説

予定の繰り返しがサポートされたことにより、ひとつの予定オブジェクトに対して、同じインスタンス/繰り返しの日付を表す複数のインスタンスが作成されるようになりました。このメソッドはこのような状況で役立ちます。これは、生成された繰り返し予定オブジェクトへの参照を内部でキャッシュしない設計を採用したことによります。もし繰り返し予定オブジェクトへの参照をキャッシュする方法を採用していれば、いったん生成されたオブジェクトは、コンポーネントがガーベジコレクトされないかぎりガーベジコレクトされません。

使用例
Imports Infragistics.Shared
Imports Infragistics.Win
Imports Infragistics.Win.UltraWinSchedule
Imports System.Diagnostics

	Private Sub ManageRecurrences()
		' In order to create recurring appointments, the
		' 'AllowRecurringAppointments' must be set to true.
		'
		Me.ultraCalendarInfo1.AllowRecurringAppointments = True

		' All of the appointments, including the root
		' (aka series) appointments and variances are
		' maintained in the appointments collection of
		' the UltraCalendarInfo.
		'
		Dim appt As Appointment
		For Each appt In Me.ultraCalendarInfo1.Appointments
			If (appt.IsRecurringAppointmentRoot) Then
				' The 'IsRecurringAppointmentRoot' can be used to 
				' identify the root appointment (i.e. the appointment 
				' that represents the series in the recurrence).
				'
				Debug.WriteLine(String.Format("'{0} is a Root Appointment", appt))
			ElseIf (appt.IsVariance) Then
				' A Variance is a single occurrence of a recurring
				' appointment where some of the information has
				' been changed.
				Debug.WriteLine(String.Format("'{0}' is a variance of '{1}'", appt, appt.RecurringAppointmentRoot))
			ElseIf Not appt.RecurringAppointmentRoot Is Nothing Then
				' An appt that did not meet the above criteria
				' but does have a reference to a root appointment
				' is an instance of a recurring appointment. This
				' will not happen with the Appointments collection
				' but can be found when accessing the Appointments
				' collection of a date specific object (e.g. 
				' Day.Appointment) or when using the 
				' GetAppointmentsInRange method of the UltraCalendarInfo.
				'
				Debug.Write(String.Format("'{0}' is a non-variance occurrence of the recurring appointment '{1}'", appt, appt.RecurringAppointmentRoot))
			Else
				' Any other appointment is just a "regular" appointment
				' and is not part of a recurrence.
				'
				Debug.Write(String.Format("'{0}' is a standard non-recurrence related appointment.", appt))
			End If
		Next

		' To programatically create a recurring appointment,
		' you need to create an appointment object and assign
		' an 'AppointmentRecurrence' that provides the recurrence 
		' information. Note, an AppointmentRecurrence instance can
		' only be associated with one appointment.
		'
		Dim dt As DateTime = DateTime.Now
		Dim rootAppt As Appointment = Me.ultraCalendarInfo1.Appointments.Add(dt, "New Recurring Appointment")

		' create a recurrence that will occur every day for 30 days
		rootAppt.Recurrence = New AppointmentRecurrence()
		rootAppt.Recurrence.PatternFrequency = RecurrencePatternFrequency.Daily
		rootAppt.Recurrence.PatternInterval = 1
		rootAppt.Recurrence.RangeLimit = RecurrenceRangeLimit.LimitByNumberOfOccurrences
		rootAppt.Recurrence.RangeMaxOccurrences = 30

		' now let's get an occurence of this appointment

		' we'll start by getting the appointments that occur
		' tomorrow
		Dim appts As AppointmentsSubsetCollection = Me.ultraCalendarInfo1.GetDay(dt.AddDays(1D), True).Appointments

		' now get the appointment that represents an occurrence of
		' the above appt
		Dim occurrence As Appointment = appts(0)

		' By changing values such as the StartDateTime, AllDayEvent,
		' Locked, Visible, etc. of an occurrence of a recurring
		' appointment, a variance is created.
		occurrence.AllDayEvent = True

		Dim moreAppts As AppointmentsSubsetCollection = Me.ultraCalendarInfo1.GetDay(dt.AddDays(2D), True).Appointments

		' To remove an occurrence, you need to set the 'IsRemoved'
		' property of the instance to true.
		'
		moreAppts(0).IsRemoved = True

		' Both modifying the values of an appointment or marking
		' it for removal will cause the creation of a variance.
		' The variances are instances of the appointment that 
		' relate to the original root appointment. These appointments
		' will be part of the Appointments collection
		' of the UltraCalendarInfo but can also be accessed using
		' the Variances collection of the AppointmentRecurrence.
		'
		Debug.WriteLine(String.Format("The Recurring Appointment '{0}' has '{1}' variance(s).", rootAppt, rootAppt.Recurrence.Variances.Count))

		' When a property of a variance has been changed, the value
		' for that property is only retreived from the variance
		' but the value for the remaining properties is retreived
		' from the root appointment and therefore changing values
		' on the root appointment will still affect the variances
		' e.g. In the above example. the AllDayEvent and IsRemoved
		' properties were changed in 2 occurrences so the remaining
		' values should come from the root appointment.
		rootAppt.Subject = "Changed Root Appointment Subject"

		' the following should be false since the subject for
		' the occurrence should come from the root appointment
		' since it has not changed.
		If rootAppt.Subject = occurrence.Subject Then _
		 Debug.WriteLine("The occurrence has a different subject then the root appointment!")

		' An important point to remember is that when an 
		' occurrence is requested, the object references may not
		' be the same but they may represent the same appointment.
		'
		Dim occurrenceStartDate As DateTime = dt.AddDays(7D).Date
		Dim occurrenceEndDate As DateTime = occurrenceStartDate.AddDays(1D)
		Dim firstRequest As Appointment = Me.ultraCalendarInfo1.GetAppointmentsInRange(occurrenceStartDate, occurrenceEndDate)(0)
		Dim secondRequest As Appointment = Me.ultraCalendarInfo1.GetAppointmentsInRange(occurrenceStartDate, occurrenceEndDate)(0)

		' the object references will be different
		If Not firstRequest Is secondRequest Then _
		 Debug.WriteLine("The object references are different.")

		' but they represent the same logical occurrence of the recurrence
		If firstRequest.IsSameAppointment(secondRequest) Then _
		 Debug.WriteLine("The appointments represent the same occurrence of a recurring appointment.")

		' To delete an entire series you need to remove
		' the root appointment from the appointments collection
		' 
		Me.ultraCalendarInfo1.Appointments.Remove(rootAppt)
	End Sub
using Infragistics.Shared;
using Infragistics.Win;
using Infragistics.Win.UltraWinSchedule;
using System.Diagnostics;

		private void ManageRecurrences()
		{
			// In order to create recurring appointments, the
			// 'AllowRecurringAppointments' must be set to true.
			//
			this.ultraCalendarInfo1.AllowRecurringAppointments = true;
			
			// All of the appointments, including the root
			// (aka series) appointments and variances are
			// maintained in the appointments collection of
			// the UltraCalendarInfo.
			//
			foreach(Appointment appt in this.ultraCalendarInfo1.Appointments)
			{
				if (appt.IsRecurringAppointmentRoot)
				{
					// The 'IsRecurringAppointmentRoot' can be used to 
					// identify the root appointment (i.e. the appointment 
					// that represents the series in the recurrence).
					//
					Debug.WriteLine( string.Format("'{0} is a Root Appointment", appt) );
				}
				else if (appt.IsVariance)
				{
					// A Variance is a single occurrence of a recurring
					// appointment where some of the information has
					// been changed.
					Debug.WriteLine( string.Format("'{0}' is a variance of '{1}'", appt, appt.RecurringAppointmentRoot) );
				}
				else if (appt.RecurringAppointmentRoot != null)
				{
					// An appt that did not meet the above criteria
					// but does have a reference to a root appointment
					// is an instance of a recurring appointment. This
					// will not happen with the Appointments collection
					// but can be found when accessing the Appointments
					// collection of a date specific object (e.g. 
					// Day.Appointment) or when using the 
					// GetAppointmentsInRange method of the UltraCalendarInfo.
					//
					Debug.Write( string.Format("'{0}' is a non-variance occurrence of the recurring appointment '{1}'", appt, appt.RecurringAppointmentRoot) );
				}
				else
				{
					// Any other appointment is just a "regular" appointment
					// and is not part of a recurrence.
					//
					Debug.Write( string.Format("'{0}' is a standard non-recurrence related appointment.", appt) );
				}
			}

			// To programatically create a recurring appointment,
			// you need to create an appointment object and assign
			// an 'AppointmentRecurrence' that provides the recurrence 
			// information. Note, an AppointmentRecurrence instance can
			// only be associated with one appointment.
			//
			DateTime dt = DateTime.Now;
			Appointment rootAppt = this.ultraCalendarInfo1.Appointments.Add(dt, "New Recurring Appointment");

			// create a recurrence that will occur every day for 30 days
			rootAppt.Recurrence = new AppointmentRecurrence();
			rootAppt.Recurrence.PatternFrequency = RecurrencePatternFrequency.Daily;
			rootAppt.Recurrence.PatternInterval = 1;
			rootAppt.Recurrence.RangeLimit = RecurrenceRangeLimit.LimitByNumberOfOccurrences;
			rootAppt.Recurrence.RangeMaxOccurrences = 30;

			// now let's get an occurence of this appointment

			// we'll start by getting the appointments that occur
			// tomorrow
			AppointmentsSubsetCollection appts = this.ultraCalendarInfo1.GetDay(dt.AddDays(1d), true).Appointments;

			// now get the appointment that represents an occurrence of
			// the above appt
			Appointment occurrence = appts[0];

			// By changing values such as the StartDateTime, AllDayEvent,
			// Locked, Visible, etc. of an occurrence of a recurring
			// appointment, a variance is created.
			occurrence.AllDayEvent = true;

			AppointmentsSubsetCollection moreAppts = this.ultraCalendarInfo1.GetDay(dt.AddDays(2d), true).Appointments;

			// To remove an occurrence, you need to set the 'IsRemoved'
			// property of the instance to true.
			//
			moreAppts[0].IsRemoved = true;

			// Both modifying the values of an appointment or marking
			// it for removal will cause the creation of a variance.
			// The variances are instances of the appointment that 
			// relate to the original root appointment. These appointments
			// will be part of the Appointments collection
			// of the UltraCalendarInfo but can also be accessed using
			// the Variances collection of the AppointmentRecurrence.
			//
			Debug.WriteLine( string.Format("The Recurring Appointment '{0}' has '{1}' variance(s).", rootAppt, rootAppt.Recurrence.Variances.Count) );

			// When a property of a variance has been changed, the value
			// for that property is only retreived from the variance
			// but the value for the remaining properties is retreived
			// from the root appointment and therefore changing values
			// on the root appointment will still affect the variances
			// e.g. In the above example. the AllDayEvent and IsRemoved
			// properties were changed in 2 occurrences so the remaining
			// values should come from the root appointment.
			rootAppt.Subject = "Changed Root Appointment Subject";

			// the following should be false since the subject for
			// the occurrence should come from the root appointment
			// since it has not changed.
			if (rootAppt.Subject != occurrence.Subject)
				Debug.WriteLine("The occurrence has a different subject then the root appointment!");

			// An important point to remember is that when an 
			// occurrence is requested, the object references may not
			// be the same but they may represent the same appointment.
			//
			DateTime occurrenceStartDate = dt.AddDays(7d).Date;
			DateTime occurrenceEndDate = occurrenceStartDate.AddDays(1d);
			Appointment firstRequest = this.ultraCalendarInfo1.GetAppointmentsInRange(occurrenceStartDate, occurrenceEndDate)[0];
			Appointment secondRequest = this.ultraCalendarInfo1.GetAppointmentsInRange(occurrenceStartDate, occurrenceEndDate)[0];

			// the object references will be different
			if (firstRequest != secondRequest)
				Debug.WriteLine("The object references are different.");

			// but they represent the same logical occurrence of the recurrence
			if (firstRequest.IsSameAppointment(secondRequest))
				Debug.WriteLine("The appointments represent the same occurrence of a recurring appointment.");

			// To delete an entire series you need to remove
			// the root appointment from the appointments collection
			// 
			this.ultraCalendarInfo1.Appointments.Remove(rootAppt);
		}
参照