作成日: 2020/05/18 最終更新日: 2020/06/22
文書種別
使用方法
詳細
CalendarView for WinFormsのC1DateEditコントロールのドロップダウンカレンダーで、土曜日や日曜日、または休日の文字色や背景色を設定するには、C1DateEditのCalendar.DayFormattingイベントを利用します。
このイベント内でe.Dayが何曜日かを判定し、土曜日や日曜日であれば、e.DayStyleのForeColor、BackColorを設定します。また、事前に休日として任意の日付をリストアップしておき、e.Dayがこのリストに含まれる場合に色を設定することも可能です。
※この方法は、Input for WinFormsのC1DateEditコントロールでは使用できませんので、ご留意ください。
※この方法は、ビルド4.5.2.20193.393(ComponentOne 2019J v3)以降でのみ有効です。ビルド4.5.2.20192.375以前では、以下の不具合によりスタイルを設定しても反映されません。
◇ナレッジベース
84528
DayFormattingイベント内で日付のスタイルを変更しても反映されない (文書番号:84528、TFS:400353)
◎サンプルコード(VB)
このイベント内でe.Dayが何曜日かを判定し、土曜日や日曜日であれば、e.DayStyleのForeColor、BackColorを設定します。また、事前に休日として任意の日付をリストアップしておき、e.Dayがこのリストに含まれる場合に色を設定することも可能です。
※この方法は、Input for WinFormsのC1DateEditコントロールでは使用できませんので、ご留意ください。
※この方法は、ビルド4.5.2.20193.393(ComponentOne 2019J v3)以降でのみ有効です。ビルド4.5.2.20192.375以前では、以下の不具合によりスタイルを設定しても反映されません。
◇ナレッジベース
84528
DayFormattingイベント内で日付のスタイルを変更しても反映されない (文書番号:84528、TFS:400353)
◎サンプルコード(VB)
Dim _holidays As List(Of DateTime)
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
AddHolidaysToCalendar() ' 祝日の設定
AddHandler C1DateEdit1.Calendar.DayFormatting, AddressOf Calendar_DayFormatting
End Sub
Private Sub Calendar_DayFormatting(ByVal sender As Object, ByVal e As C1.Win.Calendar.DayFormattingEventArgs)
If (e.Day.DayOfWeek = DayOfWeek.Saturday) Then
e.DayStyle.ForeColor = Color.Blue
e.DayStyle.BackColor = Color.LightBlue
ElseIf (e.Day.DayOfWeek = DayOfWeek.Sunday) Then
e.DayStyle.ForeColor = Color.Red
e.DayStyle.BackColor = Color.LightYellow
ElseIf _holidays.Contains(e.Day) Then
e.DayStyle.ForeColor = Color.DarkRed
e.DayStyle.BackColor = Color.Gold
End If
End Sub
Private Sub AddHolidaysToCalendar()
_holidays = New List(Of DateTime)
_holidays.Add(New DateTime(2020, 5, 4))
_holidays.Add(New DateTime(2020, 5, 5))
_holidays.Add(New DateTime(2020, 5, 6))
End Sub
◎サンプルコード(C#) private List _holidays;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
AddHolidaysToCalendar(); // 祝日の設定
c1DateEdit1.Calendar.DayFormatting += Calendar_DayFormatting;
}
private void Calendar_DayFormatting(object sender, C1.Win.Calendar.DayFormattingEventArgs e)
{
if (e.Day.DayOfWeek == DayOfWeek.Saturday)
{
e.DayStyle.ForeColor = Color.Blue;
e.DayStyle.BackColor = Color.LightBlue;
}
else if (e.Day.DayOfWeek == DayOfWeek.Sunday)
{
e.DayStyle.ForeColor = Color.Red;
e.DayStyle.BackColor = Color.LightYellow;
}
else if (_holidays.Contains(e.Day))
{
e.DayStyle.ForeColor = Color.DarkRed;
e.DayStyle.BackColor = Color.Gold;
}
}
private void AddHolidaysToCalendar()
{
_holidays = new List();
_holidays.Add(new DateTime(2020, 5, 4));
_holidays.Add(new DateTime(2020, 5, 5));
_holidays.Add(new DateTime(2020, 5, 6));
}
}
旧文書番号
85584