データベースから取得したデータに応じて MonthCalendar の日付を強調表示する必要がありますが、OutOfMemory 例外がスローされ続けます。次のようなブール値としてデータベースから強調表示する必要がある日を取得します。
command.CommandText = "SELECT Monday FROM Days WHERE Event = "+idEvent+"";
Monday = Convert.ToBoolean(command.ExecuteScalar());
曜日ごとに同様のコードが使用されます。日付を強調表示する必要がある範囲は、1 年全体です (開始日と終了日は、どちらも DateTime タイプの年の最初と最後の日です)。私はこのコードでそれをやろうとしました:
for (DateTime day = start; day < end; day.AddDays(1))
{
if (Monday && day.DayOfWeek == DayOfWeek.Monday)
{
dates.Add(day);
}
else if (Tuesday && day.DayOfWeek == DayOfWeek.Tuesday)
{
dates.Add(day);
}
else if (Wednesday && day.DayOfWeek == DayOfWeek.Wednesday)
{
dates.Add(day);
}
else if (Thursday && day.DayOfWeek == DayOfWeek.Thursday)
{
dates.Add(day);
}
else if (Friday && day.DayOfWeek == DayOfWeek.Friday)
{
dates.Add(day);
}
else if (Saturday && day.DayOfWeek == DayOfWeek.Saturday)
{
dates.Add(day);
}
else if (Sunday && day.DayOfWeek == DayOfWeek.Sunday)
{
dates.Add(day);
}
}
monthCalendar1.BoldedDates = dates.ToArray();
このアルゴリズムのポイントは、選択したイベントが発生する日付を太字にすることです (すべてのイベントは、休日や特定の時間間隔などのいくつかの例外を除いて、年間を通じて定期的に発生します)。したがって、イベントごとに、1 年に 200 回以上発生する可能性があります。どうすればこの問題を解決できますか?