2015-12-07 2 views
2

У меня проблема с DateTimePicker.Как добавить 1 месяц к выбранному DateTimePicker

То, что я в настоящее время пытаюсь сделать, основывается на том, что текст находится в lblPrevSem (предыдущем семестре), который получает свой выбор из раскрывающегося списка на предыдущем экране, я хочу добавить определенное количество времени на DateTimePicker.

Public Property CustomFormat As String 
Dim SemesterMonths As Integer 
Dim SemesterDays As Integer 


Private Sub DeptCreatePrevSch_Load(sender As Object, e As EventArgs) Handles MyBase.Load 
    Dim SemesterYear() As String = DeptPrevSch.CboSem.Text.Split(",") 


    lblPrevSem.Text = SemesterYear(0) 
    cboYear.Text = Date.Now.Year 
    For i As Integer = 0 To 5 
     cboYear.Items.Add(Date.Now.Year + i) 
     cboYear.SelectedIndex = 0 
    Next 

    If InStr(lblPrevSem.Text, "Fall") Then 
     SemesterMonths = 1 
    ElseIf InStr(lblPrevSem.Text, "Spring") Then 
     SemesterMonths = 1 
    ElseIf InStr(lblPrevSem.Text, "Summer") Then 
     SemesterDays = 14 
    End If 

    Call dtpStart_ValueChanged(sender, e) 
End Sub 

Private Sub dtpStart_ValueChanged(sender As Object, e As EventArgs) Handles dtpStart.ValueChanged 

    Dim StartDate As Date 
    Dim StartStringDate As String 
    Dim EndDate As Date 
    Dim EndStringDate As String 


    dtpStart.Format = DateTimePickerFormat.Custom 
    dtpStart.CustomFormat = "MMMM dd, yyyy dddd" 

    StartDate = dtpStart.Value.ToString 
    StartStringDate = StartDate.ToString("MMMM dd, yyyy dddd") 
    lblRegStartDate.Text = StartStringDate 

    EndDate = dtpStart.Value.AddMonths(SemesterMonths) 
    EndDate = dtpStart.Value.AddDays(SemesterDays) 
    EndStringDate = EndDate.ToString("MMMM dd, yyyy dddd") 
    lblRegEndDate.Text = EndStringDate 

End Sub 

я могу получить его, чтобы добавить в дни просто отлично, но когда-либо я попробовать и добавить в 1 месяц, это, кажется, не работает.

Я пробовал несколько разных способов добавить за 1 месяц, но ничего пока не сработало. Закрытие ive было добавлено через 30 дней, но тогда это не учитывает месяцы, которые имеют 31 день.

Reg Дата начала является то, что когда-либо DateTimePicker является и Reg Дата окончания должны быть добавлены дни, основанные от того, что lblPrevSem является

Оба Reg Start/End Date отображаются в виде меток

(например, Fall = 1 Month, Spring = 1 Month, Summer = 2 Weeks)

+0

Во-первых, это действительно плохая идея назвать событие таким образом, события должны указывать на взаимодействие с пользователем. Поместите код в метод, который может вызвать его из любого места. 'Dim StartDate As Date ... = dtpStart.Value.ToString' заставляет меня думать, что опция Strict не включена. Некоторые из этих свойств dtp могут быть установлены в дизайнере один раз, а не снова и снова в методе – Plutonix

+0

. Я не знал, что они могут быть установлены в дизайнере? –

+0

И я полностью забыл установить опцию строгого режима. Ну, черт побери, все, что работает, и ничего ... вернуться к работе, тогда я думаю .... спасибо, что напомнили мне об этом. –

ответ

1

Ваша проблема в том, что вы возвращаете значение для EndDate после добавления значения SemesterMonths. Вы должны добавить значение SemesterDays переменной EndDate, не сбросить значение EndDate с dtpStart.Value.AddDays (SemesterDays):

EndDate = dtpStart.Value.AddMonths(SemesterMonths) 
EndDate = EndDate.AddDays(SemesterDays) 
+0

спасибо, плохо посмотри, что после того, как я переписал все это, так как я забыл поставить опцию строгого типа, как идиот –

1

Просто получить значение DateTimePicker и положить .AddYears (0) или .AddDays (0) или AddMonths (0).
Но вы также можете использовать их все одновременно.

nextServiceDateTimePicker.Value.AddYears(0).AddDays(0).AddMonths(0); 

Просто замените 0, и давайте укажем i и придаем ему значение, в котором вы нуждаетесь.

Смежные вопросы