【问题标题】:Month calendar highlights the dates that i dont wont?月历突出显示我不想要的日期?
【发布时间】:2018-06-10 04:34:47
【问题描述】:

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

顶部的一组日历控件,用于标识从 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 日。但是这些日期范围之间有一个突出显示,但我没有编写代码来突出显示它们,为什么它会突出显示日期范围以及如何修复它?

谢谢

【问题讨论】:

  • @GrantWinney 这似乎只是MonthCalendar Winforms 控件。

标签: c# winforms


【解决方案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);

【讨论】:

    【解决方案2】:

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

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

    另外,看看DateTimePicker 控制是否更适合您的需求。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多