すべての月が同じサイズでなければならないため、コントロールは Appearance のフォントを使用して、各日を表示するために必要なサイズを計算します。これが該当しなかった場合、ユーザーが月から月へスクロールしたときにコントロールのサイズが変わります (または表示される月の数が変わります)。コントロールは共通の UltraCalendarInfo を共有することができ、フォント情報を Day オブジェクトに具体的に適用できるため、日番号すべてが表示されるように、コントロールはフォント設定、特にフォント名とサイズをオーバーライドする必要があります。これは、週の番号、月ヘッダー、曜日キャプションにも適用されます。OverrideFontSettingsが False に設定されると、コントロールがこれらの設定をオーバーライドできなくなり、これらのオブジェクトそれぞれに特定のプロパティを使用します。
注: このプロパティが False に設定されると、特定のオブジェクトからの解決されたフォント名とサイズは使用されますが、日のサイズなどは変わりません。したがって、表示される情報はクリップできます。
Imports Infragistics.Win Imports Infragistics.Win.UltraWinSchedule Imports Infragistics.Win.UltraWinSchedule.MonthViewMulti Private Sub SizeCalendarForDayAppearance() ' Set the DayAppearance's FontData properties (change these values as desired) Me.ultraMonthViewMulti1.CalendarLook.DayAppearance.FontData.Name = Me.ultraMonthViewMulti1.Font.Name Me.ultraMonthViewMulti1.CalendarLook.DayAppearance.FontData.SizeInPoints = 12 ' We will only do this if the font of the CalendarLook's DayAppearance ' is set we can determine this by checking the SizeInPoints property ' for a value that is > 0. If (Me.ultraMonthViewMulti1.CalendarLook.DayAppearance.FontData.SizeInPoints > 0.0F) Then ' Create a graphics object Dim g As Graphics = Me.ultraMonthViewMulti1.CreateGraphics() ' Create a font from the DayAppearance's FontData Dim font As Font = New Font(Me.ultraMonthViewMulti1.CalendarLook.DayAppearance.FontData.Name, Me.ultraMonthViewMulti1.CalendarLook.DayAppearance.FontData.SizeInPoints) ' Use MeasureString to get the size of the rect ' needed to display a day with the current font Dim sizeDay As Size = g.MeasureString("31", font).ToSize() ' Make the dimensions a perfect square, using whichever ' value was larger, the width or height Dim dimension As Integer = System.Math.Max(sizeDay.Height, sizeDay.Width) sizeDay = New Size(dimension, dimension) ' Set the MinimumDaySize property to be large enough ' to accommodate the DayAppearance font Me.ultraMonthViewMulti1.MinimumDaySize = sizeDay ' Set the OverrideFontSettings property to false so the ' control uses the DayAppearance font settings Me.ultraMonthViewMulti1.OverrideFontSettings = False ' Dispose of the graphics and font objects g.Dispose() font.Dispose() End If End Sub
using Infragistics.Win; using Infragistics.Win.UltraWinSchedule; using Infragistics.Win.UltraWinSchedule.MonthViewMulti; private void SizeCalendarForDayAppearance() { // Set the DayAppearance's FontData properties (change these values as desired) this.ultraMonthViewMulti1.CalendarLook.DayAppearance.FontData.Name = this.ultraMonthViewMulti1.Font.Name; this.ultraMonthViewMulti1.CalendarLook.DayAppearance.FontData.SizeInPoints = 12; // We will only do this if the font of the CalendarLook's DayAppearance // is set; we can determine this by checking the SizeInPoints property // for a value that is > 0. if ( this.ultraMonthViewMulti1.CalendarLook.DayAppearance.FontData.SizeInPoints > 0.0F ) { // Create a graphics object Graphics g = this.ultraMonthViewMulti1.CreateGraphics(); // Create a font from the DayAppearance's FontData Font font = new Font( this.ultraMonthViewMulti1.CalendarLook.DayAppearance.FontData.Name, this.ultraMonthViewMulti1.CalendarLook.DayAppearance.FontData.SizeInPoints ); // Use MeasureString to get the size of the rect // needed to display a day with the current font Size sizeDay = g.MeasureString( "31", font ).ToSize(); // Make the dimensions a perfect square, using whichever // value was larger, the width or height int dimension = System.Math.Max( sizeDay.Height, sizeDay.Width ); sizeDay = new Size( dimension, dimension ); // Set the MinimumDaySize property to be large enough // to accommodate the DayAppearance font this.ultraMonthViewMulti1.MinimumDaySize = sizeDay; // Set the OverrideFontSettings property to false so the // control uses the DayAppearance font settings this.ultraMonthViewMulti1.OverrideFontSettings = false; // Dispose of the graphics and font objects g.Dispose(); font.Dispose(); } }