当维度大于 1,1 时,指定月历中的第一个月
Posted
技术标签:
【中文标题】当维度大于 1,1 时,指定月历中的第一个月【英文标题】:Specify first month in Month Calendar when dimensions are larger than 1,1 【发布时间】:2015-05-26 15:23:11 【问题描述】:当您一次显示多个月时,是否可以指定在月历中首先显示哪个月份?
我看到过类似的问题,但没有一个得到回答,而是为他们手头的任务提供了一个解决方案。我想要一个简单的“是这样的......”或“不,因为......”
我试过了
monthCalendar.TodaysDate
monthCalendar.MinDate
monthCalendar.MaxDate
monthCalendar.SetDate
monthCalendar.SelectionStart
monthCalendar.SelectionEnd
其中没有一个正确地将包含所选日期的月份移到开头。所选日期的月份始终是要显示的最后一个月,这在想要选择未来日期时不好。
2015 年 5 月 29 日编辑
似乎只有在尝试使用当前年份(2015 年)的未来日期设置 MonthCalendar 时才会出现此问题。一个很好的示例日期是 2015 年 7 月 20 日。
【问题讨论】:
它实际上只有在您选择未来的日期时才会发生,您可以选择例如2015 年 1 月 20 日,很好。我看到的是它总是希望当前月份是显示的第一个月。 感谢@DrewJordan 了解这一点。本月过去的任何事情仍然如此。例如:如果您选择一个比当前月份晚 5 个月且维度为 (3,1) 的日期,它的行为仍然相同。即使没有显示当前月份。非常奇怪的行为。我很好奇这是否是预期的功能。 设置MinDate
对我来说似乎没问题 - 你用它做了什么?也许编辑您的问题并添加一个完整的示例?
设置 MinDate
不适用于我所需的应用程序,他们必须能够选择从 DateTime.Now
到任何未来日期的任何日期。所以仅仅因为我希望日历在当前日期后 2 个月开始并不意味着我可以删除这 2 个月,以便它在正确的位置开始。
所以当您在问题中说您“尝试过”monthCalendar.MinDate
时,您是在撒谎吗?
【参考方案1】:
是的,这是可能的。我使用SelectionStart
和SelectionEnd
的组合来做到这一点。
this.monthCalendar1.CalendarDimensions = new System.Drawing.Size(4, 3);
this.monthCalendar1.FirstDayOfWeek = System.Windows.Forms.Day.Monday;
this.monthCalendar1.SelectionStart = new DateTime(1980, 5, 20);
this.monthCalendar1.SelectionEnd = new DateTime(1980, 5, 20);
编辑:对我来说,设置SelectionStart
实际上效果很好,唯一的问题是它默认选择了最大选择计数。
【讨论】:
抱歉,这段代码不能一直工作。一旦您尝试将日期设置为当前年份(2015 年),就会出现问题。我将编辑问题以反映该问题仅与当前年份有关。以上是关于当维度大于 1,1 时,指定月历中的第一个月的主要内容,如果未能解决你的问题,请参考以下文章