C# 从datetimepicker计算年龄,并立即在文本框中显示该年龄

C# 从datetimepicker计算年龄,并立即在文本框中显示该年龄,c#,C#,我想从datetimepicker计算年龄。 一旦用户从datetimepicker中选择日期,年龄就会计算出来,然后立即自动显示在年龄文本框中。 这就是我在控制台应用程序中所做的 int age = 0; DateTime currentDate = DateTime.Parse( DateTime.Now.Date.ToShortDateString()); Console.WriteLine(currentDate); Console.WriteLine("P

我想从datetimepicker计算年龄。 一旦用户从datetimepicker中选择日期,年龄就会计算出来,然后立即自动显示在年龄文本框中。 这就是我在控制台应用程序中所做的

 int age = 0;
 DateTime currentDate = DateTime.Parse( DateTime.Now.Date.ToShortDateString());           
 Console.WriteLine(currentDate);
 Console.WriteLine("Please enter your birthdate");
 DateTime birthdate = DateTime.Parse( Console.ReadLine());
 age = currentDate.Year - birthdate.Year;
 if (currentDate.Month <birthdate.Month)
  {
       age--;
  }
 else if ((currentDate.Month >= birthdate.Month) 
            && (currentDate.Day < birthdate.Day))
 {
       age--;
 }

 Console.WriteLine(age);
int-age=0;
DateTime currentDate=DateTime.Parse(DateTime.Now.Date.ToShortDateString());
Console.WriteLine(当前日期);
Console.WriteLine(“请输入您的生日”);
DateTime birthdate=DateTime.Parse(Console.ReadLine());
年龄=当前日期.Year-出生日期.Year;
if(currentDate.Month=生日.Month)
&&(currentDate.Day

我可以在winform应用程序中使用相同的逻辑计算年龄。但我不知道在用户从datetimepicker中选择年龄后,如何立即在年龄文本框中自动显示年龄。

好的,这相当简单。只需添加eventhandler,监听datepicker的
OnValueChanged
事件。请参阅第页以获取帮助。
只需像这样设置textbox的值
myTextBox.Text=新计算值

只需将ValueChanged事件添加到DateTimePicker

在窗体更改其值后调用此事件。 您的代码如下所示:

dateTimePicker.ValueChanged += new EventHandler(dateTimePicker_ValueChanged);

void dateTimePicker_ValueChanged(object sender, EventArgs e)
{
    DateTime birthdate = dateTimePicker.Value;
    //Recalculate the birthdate and set Textbox
}

我想你这里有个bug:

else if ((currentDate.Month >= birthdate.Month) 
            && (currentDate.Day < birthdate.Day))
 {
       age--;
 }
else if((currentDate.Month>=birthdate.Month)
&&(currentDate.Day

它应该是
(currentDate.Month==birthdate.Month)

我知道现在回答这个问题已经太迟了,但还是简单地在dateTimePicker的ValueChanged事件中使用这个,希望它能对其他人有所帮助

private void dateTimePicker1_ValueChanged(object sender, EventArgs e)
        {
            int Age = DateTime.Today.Year - dateTimePicker1.Value.Year; // CurrentYear - BirthDate

             txtAge.Text = Age.ToString();
        }

通过直接保存日期,您可以使您的
currentDate
更加高效
DateTime currentDate=DateTime.Now.date。你不需要转换成
字符串
,然后再解析回
日期时间
。我倾向于发现只写int age=
(int)(DateTime.Now.Subtract(birthday.TotalDays/365.25)
,代码更少,更容易阅读。谢谢大家。我非常感谢你们的帮助。我还在学C#。所以我可能会问很多问题,也会问很多问题,所以请在将来也像这样帮助我。