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

时间:2013-03-07 09:08:45

标签: c#

我想从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);

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

4 个答案:

答案 0 :(得分:3)

我知道回答为时已晚,但仍然只是在dateTimePicker的ValueChanged事件中使用它,希望它对某人有帮助

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

             txtAge.Text = Age.ToString();
        }

答案 1 :(得分:0)

好的,这很简单。只需添加eventhandler,即可收听datepicker的OnValueChanged事件。请参阅msdn页面以获取帮助。  只需设置文本框的值,如myTextBox.Text = new calculated value

答案 2 :(得分:0)

只需将ValueChanged事件添加到DateTimePicker。

MSDN ValueChanged Event

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

dateTimePicker.ValueChanged += new EventHandler(dateTimePicker_ValueChanged);

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

答案 3 :(得分:0)

我认为你有一个错误:

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

应为(currentDate.Month == birthdate.Month)