2016-07-28 88 views
2

我已經提出了一個應用程序,用戶在那裏使用DatePicker來選擇出生日期。用戶必須超過21歲並且不超過26歲。如果用戶超過21歲並且不超過26歲,則會出現一個消息框,指出「成功」。但是,當我選擇21至25歲之間的出生日期時,什麼都不會發生。不知道我在做什麼錯在這裏,但我認爲這是在我的datePicker21和25兩個年齡段的日期選擇器wpf

我的代碼minusing從我選定的日期21和26是休耕

XAML

<DatePicker HorizontalAlignment="Center" Name="dpkDOB" Grid.Column="1" VerticalAlignment="Top" Grid.Row="10" /> 

xaml.cs

DatePicker dp = new DatePicker(); 

      DateTime dateMinimum = dpkDOB.SelectedDate.Value.AddYears(-21); 
      DateTime dateMaximum = dpkDOB.SelectedDate.Value.AddYears(-26); // 26, as this would include somebody whose just below 26 years old 
      DateTime birthDate = Convert.ToDateTime(dp.SelectedDate); 

      if (birthDate > dateMinimum && birthDate < dateMaximum) 
      { 
       MessageBox.Show("Success"); 
      } 
+0

當你追蹤它時會發生什麼? – BugFinder

+0

我不知道wpf,但在任何平臺上datepickers是你想要插件的東西 – bresleveloper

+0

如果我選擇DOB作爲30/05/1994例如'dateMinimum'顯示30/05/1973和'dateMaximum'顯示30/05/1968 –

回答

2

你選錯DatePicker比較:

DateTime birthDate = Convert.ToDateTime(dp.SelectedDate); 

應該

DateTime birthDate = Convert.ToDateTime(dpkDOB.SelectedDate); 

根據的評論:

DateTime birthDate = Convert.ToDateTime(dpkDOB.SelectedDate); 

if(birthDate > DateTime.Now.AddYears(-26) && birthDate < DateTime.Now.AddYears(-21)) 
{ 
    // do stuff 
} 

如果您需要這更經常在你的解決方案,考慮延長像這樣:

public static class Extensions 
{ 
    public static TimeSpan Age(this DateTime dt) 
    { 
     return (DateTime.Now - dt); 
    } 

    public static int Years(this TimeSpan ts) 
    { 
     return (int)((double)ts.Days/365.2425); 
    } 
} 

用法:

DateTime birthDate = Convert.ToDateTime(dpkDOB.SelectedDate); 

if (birthDate.Age().Years() > 21 && birthDate.Age().Years() < 26) 
{ 
    // do stuff 
} 
+0

我在那裏添加了一點代碼,它似乎仍然不起作用。 –

+0

你的目標是根據當天定義一個年齡範圍? – C4u

+0

是的,用戶需要從今天的日期超過21歲,少於26歲。我也嘗試過使用這個'dateMinimum = DateTime.Now.AddYears(-21);'但我在「現在」出現錯誤 –

相關問題