在三个组合框中显示日期

时间:2012-10-13 11:04:56

标签: c# .net winforms c#-4.0 combobox

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

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

enter image description here

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

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”,...)

3 个答案:

答案 0 :(得分:3)

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

使用

检查所有三个失去焦点时的有效日期
DateTime.DaysInMonth(int year, int month);

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

现在失去焦点(所有三个失去焦点上的一个失焦点事件)检查日期是否小于或等于方法返回的天数。如果没有,则提醒消息或其他内容。

答案 1 :(得分:1)

我认为您希望根据月份规范填充日期组合框值。 您可以尝试此代码。它可能会帮助你。你写了一个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());
    }
   }

就像那样你也可以做其他几个月的验证。

答案 2 :(得分:0)

写 for循环语句中的Item

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