如何在monthCalendar控件中使每个星期一大胆?

时间:2017-02-16 14:41:40

标签: c# winforms monthcalendar

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

因此,我想知道如何制作星期一的大胆(甚至改变背景颜色),这样才能更明显?

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

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

1 个答案:

答案 0 :(得分: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);
        }
很多整洁。