概要
DrawModeプロパティを使用してカレンダーを描画する方法を設定できます。デフォルトでは、Normalです。
GcCalendar コントロールのDrawModeプロパティがOwnerDrawDayまたはOwnerDrawDayAndMonthの場合、日付領域が変わるときにDrawDayイベントが発生します。イベントハンドラのパラメーターとして渡されたDrawDayEventArgsクラスのプロパティとメソッドを使用して日付部分を描画できます。DrawModeプロパティがOwnerDrawMonthまたはOwnerDrawDayAndMonthの場合、月領域が変わるときにDrawMonthイベントが発生します。DrawMonthEventArgsクラスのプロパティとメソッドを使用して月部分を描画します。使用できるプロパティとメソッド、および使用方法に関する詳細については、DrawDayイベントとDrawMonthイベントの解説と使用例をご参照ください。
DrawModeの値 | 説明 |
---|---|
Normal | GcCalendar コントロールの日付および月領域はシステムによって描画されます。 |
OwnerDrawDay | CalendarTypeがMonthDayの場合、DrawDayイベントを使用して日付領域を描画できます。 |
OwnerDrawMonth | CalendarTypeがYearMonthの場合、DrawMonthイベントを使用して日付領域を描画できます。 |
OwnerDrawDayAndMonth | DrawDayイベントとDrawMonthイベントを使用して日付および月領域を描画できます。 |
サンプルコード
次のサンプルコードは、特定の日付領域に任意のテキストと画像を使用して描画する方法を示します。
Imports GrapeCity.Win.Calendar GcCalendar1.DrawMode = CalendarDrawMode.OwnerDrawDay GcCalendar1.Lines.Vertical = New Line(LineStyle.Hair, Color.Gray) GcCalendar1.Lines.Horizontal = New Line(LineStyle.Single, Color.Gray) If e.Month = 6 And e.Day = 4 Then Dim myBrush As Brush = Brushes.Red e.DrawBackground() Dim format As New StringFormat() format.Alignment = StringAlignment.Far format.LineAlignment = StringAlignment.Center e.Graphics.DrawString("休", GcCalendar1.Font, myBrush, e.Bounds, format) e.Graphics.DrawImage(New Bitmap("D:\icon.png"), New Point(e.Bounds.X, e.Bounds.Y)) Else e.DrawBackground() e.DrawTodayImageAndFocusRectangle() e.DrawForeground() End If
using GrapeCity.Win.Calendar; gcCalendar1.Lines.Vertical = New Line(LineStyle.Hair, Color.Gray); gcCalendar1.Lines.Horizontal = New Line(LineStyle.Single, Color.Gray); private void gcCalendar1_DrawDay(object sender, DrawDayEventArgs e) { if (e.Month == 6 && e.Day == 4) { Brush myBrush = Brushes.Red; e.DrawBackground(); StringFormat format = new StringFormat(); format.Alignment = StringAlignment.Far; format.LineAlignment = StringAlignment.Center; e.Graphics.DrawString("休", gcCalendar1.Font, myBrush, e.Bounds, format); e.Graphics.DrawImage(new Bitmap("D:\icon.png"), new Point(e.Bounds.X, e.Bounds.Y)); } else { e.DrawBackground(); e.DrawTodayImageAndFocusRectangle(); e.DrawForeground(); } }