[C#][Windows Formsアプリ][MonthCalendar] 毎月同じ日を自動で太字にする

スポンサーリンク

はじめに

本記事では、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() での反映を覚えておけば、締め日・定例日の可視化を最小コードで導入できます。

Please follow and like us:

コメント

タイトルとURLをコピーしました