C# 月历突出了我不喜欢的日期?

C# 月历突出了我不喜欢的日期?,c#,winforms,C#,Winforms,我创建了以下一组月历控件: 最上面的一组日历控件,用于确定2014年2月至2014年2月后任何月份课程的开始和结束时间 我在表单的Load()事件中有如下代码 DateTime dtSem1 = new DateTime(mcSem1Start.SelectionRange.Start.Year, 2, 1); DateTime dtSem2 = new DateTime(mcSem2Start.SelectionRange.Start.Year, 6, 1); mcSem1Start.Se

我创建了以下一组月历控件:

最上面的一组日历控件,用于确定2014年2月至2014年2月后任何月份课程的开始和结束时间

我在表单的Load()事件中有如下代码

DateTime dtSem1 = new DateTime(mcSem1Start.SelectionRange.Start.Year, 2, 1);
DateTime dtSem2 = new DateTime(mcSem2Start.SelectionRange.Start.Year, 6, 1);

mcSem1Start.SelectionStart = dtSem1;
mcSem1End.SelectionStart = dtSem1.AddMonths(1);

mcSem2Start.SelectionStart = dtSem2;
mcSem2End.SelectionStart = dtSem2.AddMonths(1);

mcSem1Start_DateChanged(mcSem1Start, new DateRangeEventArgs(dtSem1, dtSem1));
mcSem2Start_DateChanged(mcSem2Start, new DateRangeEventArgs(dtSem2, dtSem2));
如你所见,我已将第一排日历的日期设置为2月1日,第二排日历的日期设置为3月1日。但是在这些日期范围之间有一个突出显示,但我没有编写代码来突出显示它们,为什么它突出显示日期范围以及如何修复它


谢谢

当您只设置
SelectionStart
,而不设置
SelectionEnd
,它会自动选择一个等于
MaxSelectionCount
值的天数范围

在设置任何开始日期之前,将该值设置为1可修复此问题:

mcSem1Start.MaxSelectionCount = 1;
mcSem1End.MaxSelectionCount = 1;

mcSem2Start.MaxSelectionCount = 1;
mcSem2End.MaxSelectionCount = 1;
或者,您可以设置同一天的结束日期:

mcSem1Start.SelectionStart = dtSem1;
mcSem1Start.SelectionEnd = dtSem1;

mcSem1End.SelectionStart = dtSem1.AddMonths(1);
mcSem1End.SelectionEnd = dtSem1.AddMonths(1);
或者您可以选择一个仅为一天的“范围”:

mcSem1Start.SelectionRange = new SelectionRange(dtSem1, dtSem1);

var nextMonth = dtSem1.AddMonths(1);
mcSem1End.SelectionRange = new SelectionRange(nextMonth, nextMonth);

您正在控件上设置
SelectionStart
。现在,默认情况下,MonthCalendar的选择计数为7。这意味着您可以选择7天的日期范围。因此,如果设置开始日期,则将自动设置结束日期

现在,您可以将
MaxSelectionCount
设置为1。但这意味着用户只能选择一天。如果您的目标是不显示任何突出显示并使用更长的选择范围,请同时设置
SelectionEnd


另外,请查看
DateTimePicker
控件是否更适合您的需要。

@grantwiney,它似乎只是
MonthCalendar
Winforms控件。