如何在monthCalendar 控件中使每个星期一加粗? [复制]

Posted

技术标签:

【中文标题】如何在monthCalendar 控件中使每个星期一加粗? [复制]【英文标题】:How do I make every Monday Bold in the monthCalendar control? [duplicate] 【发布时间】:2017-02-16 14:41:39 【问题描述】:

我正在开发一个应用程序。我最初想让用户只选择一个星期一。花了相当多的时间后,我发现除非我创建自己的控件,否则这是不可能的。

因此我想知道如何使星期一的粗体(甚至更改背景颜色)使其更明显?

有没有办法以编程方式选择(同一周的)星期一,无论选择一周中的哪一天?

例如,如果他们点击 2/16,则会自动选择该 2/13。

【问题讨论】:

【参考方案1】:

我在日期时间选择器值更改事件中完成了此操作。 似乎工作。希望对您有所帮助!

  private void dtP1_ValueChanged(object sender, EventArgs e)
        
            var days = DayOfWeek.Monday - dtP1.Value.DayOfWeek;

            if (dtP1.Value.DayOfWeek != DayOfWeek.Monday)
            
                dtP1.Value = new DateTime(dtP1.Value.Year, dtP1.Value.Month, dtP1.Value.Day + days);
            

        

我已经设法为它编写和扩展方法。

 public static class DateTimeHelper
    
        public static void AlwaysChooseMonday(this DateTimePicker dtp, DateTime value)
        
            var days = DayOfWeek.Monday - dtp.Value.DayOfWeek;

            if (dtp.Value.DayOfWeek != DayOfWeek.Monday)
            
                dtp.Value = new DateTime(dtp.Value.Year, dtp.Value.Month, dtp.Value.Day + days);
            
        
    

那么值改变事件就变成了

 private void dtp1(object sender, EventArgs e)
        
             dtP1.AlwaysChooseMonday(dtP1.Value);
        

整洁很多。

【讨论】:

谢谢。我正在使用monthCalendar,并且没有ValueChanged 事件。我会看看等效的事件是什么。奇怪的是,当您选择一个星期一发生在上个月的日期(我选择 2/3/17 和繁荣崩溃)时,这会失败

以上是关于如何在monthCalendar 控件中使每个星期一加粗? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 MonthCalendar 获取“星期几”?

C#winform中怎么获取monthCalendar控件中的当前星期?

如何应用VB.NET MonthCalendar控件

如何在 C# 中隐藏 MonthCalendar 控件的下一个/上一个按钮

无法更改 WinForms MonthCalendar 控件中的字体

带有嵌入式 MonthCalendar 问题的 UserControl