はじめに
本記事では、Windows Forms の MonthCalendar における TrailingForeColor(前後月の日付文字色)の使い方を最短で解説します。月の端に表示される「先月・来月の日付」が本題の月と紛れないように、視認性を保ちながら控えめに見せるのがポイントです。
説明
MonthCalendar には 3 つの「文字色」系が存在します。
・ForeColor:当月の各日付の文字色
・TrailingForeColor:前後月に属する日付の文字色(薄くするなどの調整に使用)
・TitleForeColor:タイトル帯(「<月 年>」「曜日見出し」)の文字色
ベストプラクティス:当月(ForeColor)は読みやすく、前後月(TrailingForeColor)はコントラストを下げて控えめに。これだけで「今月の範囲」が直感的に把握できます。
サンプルコード(極力短く)
当月=濃色、前後月=薄色にする最小サンプルです。必要なら色を差し替えてご利用ください。
using System;
using System.Drawing;
using System.Windows.Forms;
class MainForm : Form
{
public MainForm()
{
Text = "MonthCalendar - TrailingForeColor";
var cal = new MonthCalendar
{
Dock = DockStyle.Fill,
ForeColor = Color.Black, // 当月の日付
TrailingForeColor = Color.DarkGray, // 前後月の日付(控えめに)
TitleBackColor = SystemColors.ActiveCaption,
TitleForeColor = SystemColors.ActiveCaptionText
};
Controls.Add(cal);
}
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.Run(new MainForm());
}
}
つまづきポイント
1) 文字が薄すぎて読めない
薄めのグレーでも環境によっては視認性が落ちます。Color.Gray や Color.DimGray など、段階的に濃くして調整しましょう。
2) 当月と前後月の差が小さい
ForeColor と TrailingForeColor のコントラスト差を広げます。背景色(BackColor)も合わせて調整すると効果的です。
3) タイトルや曜日の色も変えたい
タイトル帯は TitleBackColor / TitleForeColor で別管理です。本文と混同しないようにしましょう。
まとめ
TrailingForeColor は「前後月の日付だけを控えめに」するための専用プロパティ。ForeColor とのコントラストを適切にとるだけで、今月の境界が一目瞭然になり、見やすいカレンダーを短いコードで実現できます。

コメント