2016-07-28 6 views
0

Ich mache eine Anwendung, wo der Benutzer mehr als 18 sein muss. Wenn er/sie weniger als 18 ist, erscheint ein messageBox "unter Alter" zu sagen. Ich verwende eine datePicker, um die Benutzer D.O.B. Mein Problem ist, dass ich mir nicht ganz sicher bin, wie ich das programmieren soll, aber ich habe es versucht, indem ich Tutorials angeschaut habe, aber alle Tutorials scheinen 10 zu sein.überprüfen, ob das Alter <18 ist datepicker wpf

Mein Code ist wie folgt:

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

Was sind die aktuellen Ergebnisse, die Sie sehen? Worauf bezieht sich "tbkDOB"? – Josh

+0

Versuchen Sie, das ganze Jahr anstelle von 18 hinzuzufügen zB 1997 – Werdna

+0

Meinten Sie 'dpkDOB' anstelle von' tbkDOB' – ViVi

Antwort

2

ich in Visual Studio getestet haben. Sie finden den folgenden Arbeits Code:

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

Ich erhalte eine Fehlermeldung, dass 'datePicker' keine Definition enthält für den Wert. –

+0

Die Eigenschaft, die Sie verwenden möchten, ist DisplayDate - überprüfen Sie die Dokumentation: https://msdn.microsoft.com/en-us/library/system.windows.controls.datepicker(v=vs.110).aspx – PaulF

+0

Wie in die ursprüngliche Antwort hier http://stackoverflow.com/questions/4127363/date-difference-in-years-c-sharp, diese Methode ist falsch. Glücklicherweise wird ein richtiger Algorithmus von Dana etwas weiter unten angegeben, obwohl er nur 19 Stimmen hat. – Haukinger

Verwandte Themen