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

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

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

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

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

【问题讨论】:

    标签: c# winforms monthcalendar


    【解决方案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 和繁荣崩溃)时,这会失败
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-19
    • 1970-01-01
    • 1970-01-01
    • 2019-08-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多