一个简单的日期选择器

来源:互联网 发布:域名带数字好吗 编辑:程序博客网 时间:2024/05/17 03:47
  • 一个简单的日期选择器,当选择年份时,显示月份,选择月份时再显示这个月的天数。中间要判断平年、闰年,正确计算出每个月的天数。窗体中间放置3个ListBox,分别存储year、month、day。

  • 1、当加载主窗体时,向cboYears添加年份,从1949至今,获得当时系统时间:DataTime.Now.Year

  • 2、选择某一年份时,触发cboYears.SelectedIndexChanged事件,向cboMonths添加月份

  • 3、选择某一月份时,触发cboMonths.SelectedIndexChanged事件,向cboDays添加天,此时,判断平年,闰年,正确计算这个月份的天数,其中用到多条件选择语句 switch...case...语句

        private void Form1_Load(object senderEventArgs e)        {            //窗体加载时候,向cboYears中添加年份            int year =DateTime.Now.Year;            for (int i=yeari>=1949; i--)            {                cboYears.Items.Add(i+"年");            }            //将某一指定文件夹的全部路径加载到ListBox            string [] strpath =Directory.GetFiles(@"F:\高圆圆");            for (int i = 0; i < strpath.Lengthi++)            {                list.Add(strpath[i]);                //获得指定路径的扩展名                string fileName=Path.GetFileName(strpath[i]);                listBox1.Items.Add(fileName);            }        }        /// <summary>        /// 当cboYears选中某一年时向cboMonths添加月份        /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        private void cboYears_SelectedIndexChanged(object senderEventArgs e)        {            //改变年份前首先清空cboMonths中数据,防止重复添加            cboMonths.Items.Clear();            for (int i=1; i<=12; i++)            {                cboMonths.Items.Add(i+"月");            }        }        /// <summary>        /// 当cboMonths选择某一个月份时向cboDays添加天        /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        private void cboMonths_SelectedIndexChanged(object senderEventArgs e)        {            //改变年份前首先清空cboMonths中数据,防止重复添加            cboDays.Items.Clear();            //要判断月份的天数,是平年还是闰年                 int day=0;            string strmonth=cboMonths.SelectedItem.ToString().Substring(0, 1);            int month=Convert.ToInt32(strmonth);            string stryear=cboYears.SelectedItem.ToString().Substring(0, 1);            int year =Convert.ToInt32(stryear);            //判断每个月有多少天数每一个case需要有break语句            //            switch (month)            {                case 1:                case 3:                case 5:                case 7:                case 8:                case 10:                case 12:                    day=31;                    break;                case 2:                    if (year%400==0||(year%4==0&&year%100!=0))                    {                        day=29;                    }                    day=28;                    break;//break不能放在if里面,否则出现控制不能从一个case标签贯穿到另一个case错误                default:                    day=30;                    break;            }            for (int i=1; i<=dayi++)            {                cboDays.Items.Add(i+"日");            }        }
0 0