2016-07-28 93 views
0

我正在提出申請,其中用戶必須超過18歲。如果他/她小於18,則messageBox會顯示「年齡不足」。我正在使用datePicker來選擇用戶D.O.B。我的問題是我不完全確定如何編寫代碼,但我通過查看教程給了它一個去,但所有的教程似乎是dateTimePickers檢查年齡是否<18 datepicker wpf

我的代碼如下:

XAML

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

xaml.cs

int age = DateTime.Today.Year - tbkDOB.Value.Year; 
if (age < 18) 
{ 
    MessageBox.Show("Under age"); 
} 
+0

什麼是你所看到的目前的結果?什麼是'tbkDOB'指的是什麼? – Josh

+0

嘗試添加全年而不是18例如1997 – Werdna

+0

你是不是指'dpkDOB'而不是'tbkDOB' – ViVi

回答

2

我在Visual Studio中進行測試。請找到下面的工作代碼:

XAML:

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

XAML.cs:

public MainWindow() 
{ 
    InitializeComponent(); 
} 

private void dpkDOB_SelectedDateChanged(object sender, SelectionChangedEventArgs e) 
{ 
    var ageInYears = GetDifferenceInYears(dpkDOB.SelectedDate.Value, DateTime.Today); 
    if (ageInYears < 18) 
    { 
     MessageBox.Show("Under age"); 
    } 
} 

int GetDifferenceInYears(DateTime startDate, DateTime endDate) 
{ 
    return (endDate.Year - startDate.Year - 1) + 
     (((endDate.Month > startDate.Month) || 
     ((endDate.Month == startDate.Month) && (endDate.Day >= startDate.Day))) ? 1 : 0); 
} 
+0

我收到一個錯誤,說'datePicker'不包含定義爲了價值。 –

+0

您要使用的屬性是DisplayDate - 請檢查文檔:https://msdn.microsoft.com/en-us/library/system.windows.controls.datepicker(v=vs.110).aspx – PaulF

+0

如上所述原始答案在這裏http://stackoverflow.com/questions/4127363/date-difference-in-years-c-sharp,這種方法是錯誤的。幸運的是,dana給出了一個正確的算法,儘管它只有19票。 – Haukinger