'宣言 Public Property Appearance As Infragistics.Win.AppearanceBase
public Infragistics.Win.AppearanceBase Appearance {get; set;}
オブジェクトの Appearance プロパティを使用して、外観を決定する Appearance オブジェクトにオブジェクトを関連付けます。Appearanceオブジェクトには、色、境界線、フォント、透明度などの設定を制御するプロパティがあります。UltraWinScheduleのオブジェクトでは、ほとんどの場合、書式関連のプロパティを直接設定しません。その代わりに Appearance オブジェクトのプロパティを設定することで、その Appearance オブジェクトが関連付けられているオブジェクトの書式設定を制御します。
Appearance プロパティを使用してSSAppearance オブジェクトの属性を他のオブジェクトに割り当てるには、2 つの方法があります。1つは、新しい Appearance オブジェクトを作成し、それを Appearances コレクションに直接追加します。これで新しい Appearance オブジェクトを、書式設定したいオブジェクトの Appearance プロパティに割り当てます。この方法では、事前に明示的に作成してプロパティの設定を割り当てなければならない「名前付き」Appearance オブジェクトを使用します。たとえば、コントロールの Appearances コレクション内にオブジェクトを作成して値を割り当てるには、次のように記述します。
UltraDayView1.Appearances.Add "New1"
UltraDayViewSingle1.Appearances("New1").BorderColor = Color.Blue
UltraDayViewSingle1.Appearances("New1").ForeColor = Color.Red
この方法でオブジェクトを作成すると、コントロールの表示部分に書式は適用されません。オブジェクトはプロパティ値が設定された状態でコレクション内に存在するだけであり、使用されるまで待機しています。実際にこのオブジェクトを使用するには、コントロール (または別のオブジェクト) の Appearance プロパティにそのオブジェクトを割り当てる必要があります。
UltraDayViewSingle1.Appearance = UltraDayViewSingle1.Appearances("New1")
この場合、存在している Appearance オブジェクトは 1 つだけです。コントロールの外観は、コレクション内の「New1」オブジェクトの設定によって決まります。コレクション内のオブジェクトに変更を加えると、その変更は即時にコントロールに反映されます。
Appearance プロパティのもう 1 つの使用方法は、Appearanceプロパティに直接プロパティ値を設定する方法です。次に例を示します。
UltraDayViewSingle1.Appearance.ForeColor = Color.Blue
この場合は、コントロールによって自動的に Appearance オブジェクトが作成されます。この Appearance オブジェクトは Appearances コレクションのメンバーではなく、名前はありません。このオブジェクトは、作成対象のオブジェクトに固有の「組み込み」Appearanceオブジェクトです。組み込み Appearance オブジェクトのプロパティを変更すると、それが属するオブジェクト内でのみ、その変更が反映されます。
従属関係を作成せずに、名前付き Appearance オブジェクトのプロパティを組み込み Appearance オブジェクトに割り当てることができます。たとえば、次のようなコードがあるとします。
UltraDayViewSingle1.Appearance.ForeColor = UltraDayViewSingle1.Appearances("New1").ForeColor
この例では、組み込みオブジェクトの前景色と名前付きオブジェクトの前景色の間に関係は 確立されません 。これは単に名前付きオブジェクトの値を組み込みオブジェクトの値に1回限りで割り当てているだけです。この場合は 2 つの Appearance オブジェクトが存在し、1 つはコレクション内にあり、もう 1 つはコントロールに関連付けられ、互いに独立して動作します。
従属関係を作成せずに名前付きオブジェクトのすべてのプロパティを組み込みオブジェクトに一度に割り当てる場合、Appearance オブジェクトの Clone メソッドを使用して設定を複製し、それを適用することができます。名前付き Appearance オブジェクト「New1」のすべてのプロパティ設定をコントロールの組み込み Appearance オブジェクトに適用する場合に、「New1」への変更をコントロールに自動的に反映したくないときは、次のコードを使用します。
UltraDayViewSingle1.Appearance = UltraDayViewSingle1.Appearances("New1").Clone
Appearance オブジェクトのプロパティは、階層式に適用することも可能です。プロパティの中には「use default」値に設定できるものがあります。 これは、オブジェクトの親からプロパティの設定を取得することを意味します。この機能はデフォルトで有効になっているため、設定を変更しないかぎり、子オブジェクトは親に類似し、コントロールの上位階層で設定された書式は下位のオブジェクトに引き継がれます。
Imports System.Diagnostics Imports Infragistics.Win Imports Infragistics.Win.UltraWinSchedule Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load ' Initialize UltraDayView control level properties. ' Add a gradient backcolor to the AllDayEventArea Me.UltraDayView1.AllDayEventAreaAppearance.BackColor = Color.CadetBlue Me.UltraDayView1.AllDayEventAreaAppearance.BackColor2 = Color.Blue Me.UltraDayView1.AllDayEventAreaAppearance.BackGradientStyle = GradientStyle.Horizontal ' Change the control's forecolor to dark blue. Me.UltraDayView1.AllDayEventAreaAppearance.ForeColor = Color.Blue ' Set AutoAppointmentDialog to true. This will cause the Appointment dialog ' to be automaticall displayed when the user double-clicks on an appointment ' or time slot. Me.UltraDayView1.AutoAppointmentDialog = True ' Change the border style to raised. Me.UltraDayView1.BorderStyle = UIElementBorderStyle.Raised ' Check the control's current state - if there is an appointment currently in edit ' write a message to the output window. If ((Me.UltraDayView1.CurrentState And UltraDayViewState.AppointmentInEdit) <> 0) Then Debug.WriteLine("Appointment in edit") End If ' Set come edit appearance colors. Me.UltraDayView1.EditAppearance.BackColor = Color.Black Me.UltraDayView1.EditAppearance.ForeColor = Color.Green ' If the first visible time slot's starting time is equal to 12, display a message ' in the output window. If (Me.UltraDayView1.FirstVisibleTimeSlot.StartTime.Hour = 12) Then Debug.WriteLine("The noontime time slot is positioned at the top of the day view.") End If ' Hide the time slot descriptor area. Me.UltraDayView1.HideTimeSlotDescriptorArea = True ' Set the time bar color for time slots with no activity to Gray. Me.UltraDayView1.IdleTimeBarColor = Color.Gray ' Change the backcolor for the time slots. Me.UltraDayView1.NonWorkingHourTimeSlotAppearance.BackColor = Color.CadetBlue Me.UltraDayView1.WorkingHourTimeSlotAppearance.BackColor = Color.LightBlue ' Make sure the dayview's scrollbar is visible. Me.UltraDayView1.ScrollbarVisible = True ' Change the backcolor for selected time slots if the currently selected time ' starts before noon. If (Me.UltraDayView1.SelectedTimeSlotRange.StartDateTime.Hour < 12) Then Me.UltraDayView1.SelectedTimeSlotAppearance.BackColor = Color.CadetBlue End If ' Change the backcolor of the selected visible day. Me.UltraDayView1.SelectedVisibleDayAppearance.BackColor = Color.Red ' Look at each selected visible day and display a message in the output window for ' each day that is in the first week of the year. Dim selectedVisibleDay As VisibleDay For Each selectedVisibleDay In Me.UltraDayView1.SelectedVisibleDays If (selectedVisibleDay.Day.Week.WeekNumber = 1) Then Debug.WriteLine("Selected visible day found in week 1. (Date: " + selectedVisibleDay.Date.ToString() + ")") End If Next ' Add a gradient the TimeSlotDescriptors. Me.UltraDayView1.TimeSlotDescriptorAppearance.BackColor2 = SystemColors.ControlDark Me.UltraDayView1.TimeSlotDescriptorAppearance.BackGradientStyle = GradientStyle.Horizontal ' Set the time slot interval to every 15 minutes. Me.UltraDayView1.TimeSlotInterval = TimeSlotInterval.FifteenMinutes ' Set the backcolor to green for each time slot that starts on the half hour. Dim timeSlot As TimeSlot For Each timeSlot In Me.UltraDayView1.TimeSlots If timeSlot.StartTime.Minute = 30 Then timeSlot.NonWorkingHourAppearance.BackColor = Color.Green timeSlot.WorkingHourAppearance.BackColor = Color.Green End If Next ' Display the DayView control's current dimensions in the output window. Debug.WriteLine("The DayView's dimensions are: " + Me.UltraDayView1.UIElement.Rect.Width.ToString() + " x " + Me.UltraDayView1.UIElement.Rect.Height.ToString()) ' Look at each visible day and display a message in the output window for ' each visible day that falls on monday. Dim visibleDay As VisibleDay For Each visibleDay In Me.UltraDayView1.SelectedVisibleDays If visibleDay.Date.DayOfWeek = System.DayOfWeek.Monday Then Debug.WriteLine("Visible day found that falls on a monday. (Date: " + visibleDay.Date.ToString() + ")") End If Next End Sub
using System.Diagnostics; using Infragistics.Win; using Infragistics.Win.UltraWinSchedule; private void Form1_Load(object sender, System.EventArgs e) { // Initialize UltraDayView control level properties. // Add a gradient backcolor to the AllDayEventArea this.ultraDayView1.AllDayEventAreaAppearance.BackColor = Color.CadetBlue; this.ultraDayView1.AllDayEventAreaAppearance.BackColor2 = Color.Blue; this.ultraDayView1.AllDayEventAreaAppearance.BackGradientStyle = GradientStyle.Horizontal; // Change the control's forecolor to dark blue. this.ultraDayView1.AllDayEventAreaAppearance.ForeColor = Color.Blue; // Set AutoAppointmentDialog to true. This will cause the Appointment dialog // to be automaticall displayed when the user double-clicks on an appointment // or time slot. this.ultraDayView1.AutoAppointmentDialog = true; // Change the border style to raised. this.ultraDayView1.BorderStyle = UIElementBorderStyle.Raised; // Check the control's current state - if there is an appointment currently in edit // write a message to the output window. if ( (this.ultraDayView1.CurrentState & UltraDayViewState.AppointmentInEdit) == UltraDayViewState.AppointmentInEdit) Debug.WriteLine("Appointment in edit"); // Set come edit appearance colors. this.ultraDayView1.EditAppearance.BackColor = Color.Black; this.ultraDayView1.EditAppearance.ForeColor = Color.Green; // If the first visible time slot's starting time is equal to 12, display a message // in the output window. if (this.ultraDayView1.FirstVisibleTimeSlot.StartTime.Hour == 12) Debug.WriteLine("The noontime time slot is positioned at the top of the day view."); // Hide the time slot descriptor area. this.ultraDayView1.HideTimeSlotDescriptorArea = true; // Set the time bar color for time slots with no activity to Gray. this.ultraDayView1.IdleTimeBarColor = Color.Gray; // Change the backcolor for the time slots. this.ultraDayView1.NonWorkingHourTimeSlotAppearance.BackColor = Color.CadetBlue; this.ultraDayView1.WorkingHourTimeSlotAppearance.BackColor = Color.LightBlue; // Make sure the dayview's scrollbar is visible. this.ultraDayView1.ScrollbarVisible = true; // Change the backcolor for selected time slots if the currently selected time // starts before noon. if (this.ultraDayView1.SelectedTimeSlotRange.StartDateTime.Hour < 12) this.ultraDayView1.SelectedTimeSlotAppearance.BackColor = Color.CadetBlue; // Change the backcolor of the selected visible day. this.ultraDayView1.SelectedVisibleDayAppearance.BackColor = Color.Red; // Look at each selected visible day and display a message in the output window for // each day that is in the first week of the year. foreach(VisibleDay selectedVisibleDay in this.ultraDayView1.SelectedVisibleDays) { if (selectedVisibleDay.Day.Week.WeekNumber == 1) Debug.WriteLine("Selected visible day found in week 1. (Date: " + selectedVisibleDay.Date.ToString() + ")"); } // Add a gradient the TimeSlotDescriptors. this.ultraDayView1.TimeSlotDescriptorAppearance.BackColor2 = SystemColors.ControlDark; this.ultraDayView1.TimeSlotDescriptorAppearance.BackGradientStyle = GradientStyle.Horizontal; // Set the time slot interval to every 15 minutes. this.ultraDayView1.TimeSlotInterval = TimeSlotInterval.FifteenMinutes; // Set the backcolor to green for each time slot that starts on the half hour. foreach(TimeSlot timeSlot in this.ultraDayView1.TimeSlots) { if (timeSlot.StartTime.Minute == 30) { timeSlot.NonWorkingHourAppearance.BackColor = Color.Green; timeSlot.WorkingHourAppearance.BackColor = Color.Green; } } // Display the DayView control's current dimensions in the output window. Debug.WriteLine("The DayView's dimensions are: " + this.ultraDayView1.UIElement.Rect.Width.ToString() + " x " + this.ultraDayView1.UIElement.Rect.Height.ToString()); // Look at each visible day and display a message in the output window for // each visible day that falls on monday. foreach(VisibleDay visibleDay in this.ultraDayView1.SelectedVisibleDays) { if (visibleDay.Date.DayOfWeek == System.DayOfWeek.Monday) Debug.WriteLine("Visible day found that falls on a monday. (Date: " + visibleDay.Date.ToString() + ")"); } }