如何消除一周中特定日期(datepicker)[VB]

时间:2014-06-13 21:05:03

标签: wpf vb.net datepicker

我想知道是否可以从日历(DatePicker)中获取特定日期,更具体地说是每周一和周二。我找到了类似的线程(How do create a DatePicker with only Sundays enabled?Disable specific days of the week on jQuery UI datepicker)关于黑化日期,但是,我无法根据我的具体目标修改其代码。我在VB.NET(WPF)中编写了这个应用程序。

到目前为止,我使用的功能是将日期标记为:

Datepicker1.BlackoutDates.AddDatesInPast()
Datepicker2.BlackoutDates.Add(New CalendarDateRange(DateTime.Now.AddDays(1), DateTime.MaxValue))

第一个函数将清除过去日期,第二个函数将使所有未来日期变黑。因为有一个' DateRange'第二个功能需要,我无法根据需要更改此功能。

提前致谢

杰里

2 个答案:

答案 0 :(得分:4)

我修改了其中一个例子并提出了这个问题 它对我有用。

    private void MyDatePicker_CalendarOpened(object sender, RoutedEventArgs e)
    {
        MyDatePicker.DisplayDateStart = DateTime.Now;
        MyDatePicker.DisplayDateEnd = DateTime.Now + TimeSpan.FromDays(1000);

        var minDate = MyDatePicker.DisplayDateStart ?? DateTime.MinValue;
        var maxDate = MyDatePicker.DisplayDateEnd ?? DateTime.MaxValue;

        for (var d = minDate; d <= maxDate &&  DateTime.MaxValue >  d; d = d.AddDays(1))
        {
            if (d.DayOfWeek == DayOfWeek.Monday || d.DayOfWeek == DayOfWeek.Tuesday)
            {
                MyDatePicker.BlackoutDates.Add(new CalendarDateRange(d));
            }
        }
    }

这是奖金:Prevent Certain Dates from Being Selected

答案 1 :(得分:1)

谢谢Okuma Scott,这是一些有用的反馈!我根据我的具体需要将你的代码重写为VB语言。

所包含的代码将检查明年的所有日期,并将在周一和周二全部停电。

Private Sub Datepicker_CalendarOpened(sender As Object, e As RoutedEventArgs) Handles Datepicker.CalendarOpened
        Dim currDate As Date = DateTime.Now
        Dim maxDate As Date = DateTime.Now.AddDays(356)

    While (currDate < maxDate)
        If currDate.DayOfWeek = DayOfWeek.Monday Or currDate.DayOfWeek = DayOfWeek.Tuesday Then
            DatumSelectie.BlackoutDates.Add(New CalendarDateRange(currDate))
        End If
        currDate = currDate.AddDays(1)
    End While

End Sub