在三个combobox中显示日期

我是.net的初学者。 我需要在三个不同的combobox中显示daymonthyear 。 为了让他们充实,我正在尝试从1950年到现在的硬编码值。 我后来意识到我还需要检查二月(28天),闰年和其他问题。 没有硬编码值,还有其他方法可以做到这一点。

在互联网上搜索答案时,我遇到了不想使用的datepicker和monthcalendar(因为我的项目应该是我使用datepicker和monthcalendar的其他朋友的独特)。 或者如果您有任何其他建议而不是combobox,请分享。

在此处输入图像描述

我相信之前有人问过这个问题。 我不介意你指导链接。

nikhil agrawal回答之后编辑:

工作守则:

 cmbDay ---> combobox cmbMonth ---> combobox cmbYear ---> combobox 

FormLoad事件

  this.cmbYear.Leave+=new EventHandler(cmbYear_Leave); this.cmbDay.Leave += new EventHandler(cmbYear_Leave); this.cmbMonth.Leave += new EventHandler(cmbYear_Leave); // for (int i = 1950; i < 2012; i++) { cmbYear.Items.Add(i.ToString()); } for (int i = 1; i < 32; i++) { cmbDay.Items.Add(i.ToString()); } // cmbDay.SelectedIndex = 0; cmbMonth.SelectedIndex = 0; cmbYear.SelectedIndex = 0; 

OnLeave事件

 private void cmbYear_Leave(object sender, EventArgs e) { int day = DateTime.DaysInMonth(Convert.ToInt32(cmbYear.Text), cmbMonth.SelectedIndex+1); if (day <= cmbDay.SelectedIndex) { //alert message or your managing code. } } 

PS: cmbMonth是字符串格式(“Jan”,“Feb”,“Mar”,…)

填充所有三个所有可能的值,例如日期1到31,月份1月到12月和1950年到今年。

当失去对所有三个使用的焦点时,检查有效日期

 DateTime.DaysInMonth(int year, int month); 

对于年份,您可以直接将所选项目转换为int,对于月份,您可以找到selectedindex +1(coz index为0)。

现在失去焦点(所有三个失去焦点上的一个失去焦点事件)检查日期是否小于或等于方法返回的天数。 如果没有那么警告消息或其他东西。

我想你想根据月份规格填充日combobox值。 您可以尝试此代码。 它可能会帮助你。 你写了一个cmbobox selectedIndexChange事件,写下这段代码。

  if(cmbMonth.Text=="feb") //if(cmbMonth.SelectedIndex.Equals(specify index)) { for(i=0;i<29;i++) { cmbDay.Item.Add(i.ToString()); } } else { for(i=1;i<32;i++) { cmbDay.Item.Add(i.ToString()); } } 

你也可以做其他几个月的validation。

在for循环语句中编写Item的s

像cmbDay.Items.Add(i.ToString()); cmbDay.Items.Add(i.ToString());