2015-09-30 3 views
2

Эй, ребята, поэтому я делаю программу для искателя зодиака на vb. Программа работает, и все, кроме моей проблемы, заключается в том, что каждый раз, когда я запускаю ее, DateTimePickerBox возвращается к текущей дате вместо введенной даты.DateTimePicker: коробка возвращается к исходной дате?

Вот мой незавершенный код;

Открытый класс HoroscopeSign

Private Sub HoroscopeSign_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load 
    'DateTimePicker.Format = DateTimePickerFormat.Custom 
    'DateTimePicker.CustomFormat = "dd MMMM yyyy" 
    txtDOB.Format = DateTimePickerFormat.Short 

End Sub 

Private Sub btnEnter_Click(sender As System.Object, e As System.EventArgs) Handles btnEnter.Click 
    Dim DOB As Date = txtDOB.Value 
    txtDOB.Text = Process(DOB) 
End Sub 
Public Function Process(dateOfBirth As Date) As String 
    Dim sign As String 
    Dim info As String 
    Dim BirthYear As Integer = dateOfBirth.Year 
    Dim BirthMonth As Integer = dateOfBirth.Month 
    Dim BirthDay As Integer = dateOfBirth.Day 


    If txtDOB.Value >= New Date(BirthYear, 1, 20) And txtDOB.Value <= New Date(BirthYear, 2, 18) Then 
     PBHoroscope.Load("E:\Aquarius.jpg") 
     sign = "Aquarius" 
     info = "" 
    Else txtDOB.Value >= New Date(BirthYear, 2, 19) And txtDOB.Value <= New Date(BirthYear, 3, 20) Then 
     PBHoroscope.Load("E:\Pisces.jpg") 
     sign = "Pisces" 


    lblSign.Text = sign 
    lblDescription.Text = info 

End Function 

Private Sub btnExit_Click(sender As System.Object, e As System.EventArgs) Handles btnExit.Click 
    Dim a As Integer 
    a = MsgBox("Do you want to exit this application", vbYesNo, "Exit Application") 
    If a = vbYes Then 
     MsgBox("Thank you for using this application", vbOKOnly, "Exit Application") 
     End 
    Else 
     Me.Show() 
    End If 
End Sub 

Private Sub txtDOB_ValueChanged (отправитель Как System.Object, е Как System.EventArgs) Ручки txtDOB.ValueChanged Dim DOB As Date = txtDOB.Value DOB = txtDOB.Value End Sub End Class

ответ

0

Итак, вы указали свою функцию Process, чтобы вернуть строку, но вы ничего не возвращаете из этой функции. Проблема возникает тогда, когда вы пытаетесь присвоить возвращаемое значение этой функции свойству txtDOB.Text. Вы что-нибудь, и поэтому txtDOB сам сбрасывает не вернуться к текущей дате

Вы должны решить, какую строку (в формате даты) вы хотите вернуть или лучше изменить Process функцию, чтобы вернуть DateTime и присвоить это значение txtDOB.Value Недвижимость. Или просто измените эти строки на

Private Sub btnEnter_Click(sender As System.Object, e As System.EventArgs) Handles btnEnter.Click 
    ' REMOVE THIS LINE Dim DOB As Date = txtDOB.Value 
    ' REMOVE THIS LINE txtDOB.Text = Process(DOB) 
    Process(txtDOB.Value) 
End Sub 
+0

Ты мужчина Стив! – DonD