2016-07-28 57 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);'但我在“现在”出现错误 –

相关问题