はじめに
本記事では、Windows Forms の MonthCalendar で毎月同じ「日(1~31)」を太字で強調する MonthlyBoldedDates の使い方を最短で解説します。締め日・請求日・定例日など、月ごとに繰り返す目印をひと目で分かるようにできます。
説明
MonthlyBoldedDates は、AddMonthlyBoldedDate / RemoveMonthlyBoldedDate / UpdateBoldedDates の3つで扱います。
・AddMonthlyBoldedDate(new DateTime(2000, 1, 15)) のように、「年・月」はダミーでOK、日だけが使われます。
・複数日を登録すると、登録したすべての「日」が毎月太字になります。
・追加・削除のあとに UpdateBoldedDates() を呼ぶと表示に反映されます。
サンプルコード
起動時に「毎月15日」を太字にし、ボタンで「毎月(今日と同じ日)」の太字をトグルします。
using System;
using System.Windows.Forms;
class MainForm : Form
{
MonthCalendar cal = new MonthCalendar { Dock = DockStyle.Fill };
Button btnToggle = new Button { Text = "毎月「今日と同じ日」を太字トグル", Dock = DockStyle.Top };
public MainForm()
{
Text = "MonthCalendar - MonthlyBoldedDates";
Controls.Add(cal);
Controls.Add(btnToggle);
// 起動時: 毎月15日を太字
cal.AddMonthlyBoldedDate(new DateTime(2000, 1, 15));
cal.UpdateBoldedDates();
// ボタン: 毎月(今日の日)の太字をトグル
btnToggle.Click += (s, e) =>
{
int day = DateTime.Today.Day;
var key = new DateTime(2000, 1, day); // 年月はダミーでOK(「日」だけ使われる)
bool exists = Array.Exists(cal.MonthlyBoldedDates, d => d.Day == day);
if (exists) cal.RemoveMonthlyBoldedDate(key);
else cal.AddMonthlyBoldedDate(key);
cal.UpdateBoldedDates();
};
}
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.Run(new MainForm());
}
}
つまづきポイント
1) 追加したのに反映されない
UpdateBoldedDates() の呼び忘れが定番。追加/削除の最後に必ず呼びましょう。
2) 31 日がない月では?
例えば new DateTime(2000, 1, 31) を追加しても、31 日の無い月では当然表示されません。必要なら「最終営業日に置き換える」など別ロジックで補完を。
3) 年や月は何を入れる?
任意です(ダミーでOK)。必ず実在する日付(例:2/30 は不可)を指定してください。
4) 他の太字設定との併用
AddBoldedDate(単発)や AddAnnuallyBoldedDate(毎年)と併用可能です。まとめて登録してから UpdateBoldedDates() を1回だけ呼ぶと効率的。
まとめ
MonthlyBoldedDates は「毎月同じ日」を簡単に太字化できる仕組みです。年・月は無視される点と、UpdateBoldedDates() での反映を覚えておけば、締め日・定例日の可視化を最小コードで導入できます。
コメント