我创建了以下一组月历控件:
最新的日历控件集,用于标识从2014年2月到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日。但是这些日期范围之间有一个突出显示,但我没有编码突出显示它们,为什么它突出显示日期范围以及如何解决它?
谢谢
答案 0 :(得分: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);
答案 1 :(得分:0)
您正在控件上设置SelectionStart
。现在,默认情况下MonthCalendar
的选择计数为7.这意味着您可以选择7天的日期范围。因此,如果您设置开始日期,将自动设置结束日期。
现在,您可以将MaxSelectionCount
设置为1.但这意味着用户只能选择一天。如果您的目标是不显示任何突出显示并使用更长的选择范围,请同时设置SelectionEnd
。
另外,如果能更好地满足您的需求,请查看DateTimePicker
控件。