Нужна помощь по этой логике ... (.NET) - PullRequest
1 голос
/ 29 октября 2009

Это код, который я указал в своей форме, чтобы проверить, была ли дата, выбранная пользователем, более 14 дней назад или в прошлом.

If (dtpDate.Value > DateTime.Today.AddDays(14)) Then
    frmBookErr.SetError(dtpDate, "You cannot book more than two weeks in advance.")
Else
    frmBookErr.SetError(dtpDate, "")
End If
If (dtpDate.Value < DateTime.Today) Then
    frmBookErr.SetError(dtpDate, "You cannot book a room for the past.")
Else
    frmBookErr.SetError(dtpDate, "")
End If

Это работает, но если я выберу дату более чем на 14 дней вперед, она не будет отображать сообщение об ошибке из-за второго ПЧ, проверяющего, что оно в прошлом, и очищающего его.

Я действительно не могу придумать другого способа обойти это, кроме как сделать еще одно текстовое поле позади того, которое вводит пользователь, и отобразить второе сообщение об ошибке.

У кого-нибудь есть яркие идеи? Спасибо:)

Ответы [ 2 ]

8 голосов
/ 29 октября 2009

попробуйте

If (dtpDate.Value > DateTime.Today.AddDays(14)) Then
    frmBookErr.SetError(dtpDate, "You cannot book more than two weeks in advance.")
Else If (dtpDate.Value < DateTime.Today) Then
    frmBookErr.SetError(dtpDate, "You cannot book a room for the past.")
Else
    frmBookErr.SetError(dtpDate, "")
End If
1 голос
/ 29 октября 2009

Вы очень близки! Просто установите чек в блоке else if.

If (dtpDate.Value > DateTime.Today.AddDays(14)) Then
    frmBookErr.SetError(dtpDate, "You cannot book more than two weeks in advance.")
Else If (dtpDate.Value < DateTime.Today) Then
    frmBookErr.SetError(dtpDate, "You cannot book a room for the past.")
Else
    frmBookErr.SetError(dtpDate, "")
End If
...