当维度大于 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】:

是的,这是可能的。我使用SelectionStartSelectionEnd 的组合来做到这一点。

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 时,指定月历中的第一个月的主要内容,如果未能解决你的问题,请参考以下文章

超方便 macOS 月历 popCalendar 限免

Linux之cal命令

已知1800年1月1日是星期三,打印指定的年份和月份月历

卷积算子的大小和步长对张量维度的影响

第11月第18天 RACSequence

VB.Net:动态创建的月历不会触发 Lost Focus 或 GotFocus