C# 检查年龄是否为<;18日期选择器wpf
我正在制作一个用户必须超过18岁的应用程序。如果他/她小于18岁,则会出现一个C# 检查年龄是否为<;18日期选择器wpf,c#,wpf,C#,Wpf,我正在制作一个用户必须超过18岁的应用程序。如果他/她小于18岁,则会出现一个消息框显示“未成年”。我正在使用日期选择器来选择用户D.O.B。我的问题是我不完全确定如何编码,但我通过查看教程尝试了一下,但所有教程似乎都是日期选择器 我的代码如下: xaml xaml.cs int age = DateTime.Today.Year - tbkDOB.Value.Year; if (age < 18) { MessageBox.Show("Under age"); }
消息框
显示“未成年”。我正在使用日期选择器
来选择用户D.O.B。我的问题是我不完全确定如何编码,但我通过查看教程尝试了一下,但所有教程似乎都是日期选择器
我的代码如下:
xaml
xaml.cs
int age = DateTime.Today.Year - tbkDOB.Value.Year;
if (age < 18)
{
MessageBox.Show("Under age");
}
int age=DateTime.Today.Year-tbkDOB.Value.Year;
if(年龄<18岁)
{
MessageBox.Show(“未成年”);
}
我已经在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);
}
public主窗口()
{
初始化组件();
}
私有无效dpkDOB_SelectedDateChanged(对象发送方,SelectionChangedEventArgs e)
{
var ageInYears=GetDifferenceInYears(dpkDOB.SelectedDate.Value,DateTime.Today);
如果(年龄<18岁)
{
MessageBox.Show(“未成年”);
}
}
int GetDifferenceInEars(日期时间开始日期、日期时间结束日期)
{
报税表(endDate.Year-startDate.Year-1)+
((endDate.Month>startDate.Month)||
((endDate.Month==startDate.Month)和&(endDate.Day>=startDate.Day))?1:0;
}
我已经在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);
}
public主窗口()
{
初始化组件();
}
私有无效dpkDOB_SelectedDateChanged(对象发送方,SelectionChangedEventArgs e)
{
var ageInYears=GetDifferenceInYears(dpkDOB.SelectedDate.Value,DateTime.Today);
如果(年龄<18岁)
{
MessageBox.Show(“未成年”);
}
}
int GetDifferenceInEars(日期时间开始日期、日期时间结束日期)
{
报税表(endDate.Year-startDate.Year-1)+
((endDate.Month>startDate.Month)||
((endDate.Month==startDate.Month)和&(endDate.Day>=startDate.Day))?1:0;
}
您目前看到的结果是什么?tbkDOB
指的是什么?试着把18岁改成18岁,比如1997年,你是说dpkDOB
而不是tbkDOB
是的,我是说dpkDOB
你还需要检查日期和月份-如果生日在一年的晚些时候,那么这个人可能是17岁。你最好的办法是将今天的日期减去18年,然后比较这两个日期。检查此处的日期和时间函数:您看到的当前结果是什么?tbkDOB
指的是什么?试着把18岁改成18岁,比如1997年,你是说dpkDOB
而不是tbkDOB
是的,我是说dpkDOB
你还需要检查日期和月份-如果生日在一年的晚些时候,那么这个人可能是17岁。你最好的办法是将今天的日期减去18年,然后比较这两个日期。检查此处的日期和时间函数:我收到一个错误,说明datePicker
不包含值的定义。您要使用的属性是DisplayDate-检查文档:如原始答案中所述,此方法是错误的。幸运的是,dana给出了一个正确的算法,虽然它只有19票。我已经尝试过了,但是我得到了一个运行时“从Int32到DateTime的等价转换”,使用这个代码DateTime zeroTime=new DateTime(1,1,1)<代码>日期时间a=Convert.ToDateTime(dpkDOB.SelectedDate.Value.Year);DateTime b=Convert.ToDateTime(DateTime.Today.Year);时间跨度=b-a;//因为我们从公历的第一年开始,我们必须在这里减去一年。整数年=(零时间+跨度);如果(年岁<18){MessageBox.Show(“未成年”);}@CraigGallagher:很抱歉耽搁了。我离开办公桌很长时间了。我已经在VisualStudio中进行了测试,编辑了我的答案并添加了工作代码。请试一试。我收到一个错误,说datePicker
不包含值的定义。您要使用的属性是DisplayDate-检查文档:如原始答案中所述,此方法是错误的。幸运的是,dana给出了一个正确的算法,虽然它只有19票。我已经尝试过了,但是我得到了一个运行时“从Int32到DateTime的等价转换”,使用这个代码DateTime zeroTime=new DateTime(1,1,1)<代码>日期时间a=Convert.ToDateTime(dpkDOB.SelectedDate.Value.Year);DateTime b=Convert.ToDateTime(DateTime.Today.Year);时间跨度=b-a;//因为我们从公历的第一年开始,我们必须在这里减去一年。整数年=(零时间+跨度);如果(年岁<18){MessageBox.Show(“未成年”);}@CraigGallagher:很抱歉耽搁了。我离开办公桌很长时间了。我已经在VisualStudio中进行了测试,编辑了我的答案并添加了工作代码。请试一试。