C# 在三个组合框中显示日期

C# 在三个组合框中显示日期,c#,.net,winforms,c#-4.0,combobox,C#,.net,Winforms,C# 4.0,Combobox,我是.net的初学者。我需要在三个不同的组合框中显示日、月和年。为了让它们填满,我尝试了从1950年到现在的硬编码值。后来我意识到我还需要检查Ferburary(28天)、闰年和其他问题。是否有其他方法可以在不硬编码值的情况下执行此操作 在互联网上搜索答案时,我遇到了datepicker和monthcalendar,我不想使用它们(因为我的项目应该与使用datepicker和monthcalendar的其他朋友不同)。或者,如果您有任何其他建议而不是组合框,请分享 我相信以前有人问过这个问题。

我是.net的初学者。我需要在三个不同的组合框中显示
。为了让它们填满,我尝试了从1950年到现在的硬编码值。后来我意识到我还需要检查Ferburary(28天)、闰年和其他问题。是否有其他方法可以在不硬编码值的情况下执行此操作

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

我相信以前有人问过这个问题。我不介意你直接链接

根据nikhil agrawal的回答编辑:

工作代码:

cmbDay    --->  combobox
cmbMonth  --->  combobox
cmbYear   --->  combobox
FormLoad事件

this.cmbYear.Leave+=新事件处理程序(cmbYear\u Leave);
this.cmbDay.Leave+=新事件处理程序(cmbdayer\u Leave);
this.cmbMonth.Leave+=新事件处理程序(cmbYear\u Leave);
//
对于(int i=1950;i<2012;i++)
{
cmbYear.Items.Add(i.ToString());
}
对于(int i=1;i<32;i++)
{
cmbDay.Items.Add(i.ToString());
}
//
cmbDay.SelectedIndex=0;
cmbMonth.SelectedIndex=0;
cmbYear.SelectedIndex=0;
联机事件

私人假期(对象发送者,事件参数e)
{
int day=DateTime.DaysInMonth(将.ToInt32(cmbYear.Text)转换为cmbMonth.SelectedIndex+1);

如果(天用所有可能的值填充所有三个,如日期1至31、月份1至12、年份1950至当前年份

使用以下选项检查所有三个选项失去焦点时的有效日期

DateTime.DaysInMonth(int year, int month);
对于年份,您可以直接将所选项目转换为int;对于月份,您可以找到selectedindex+1(因为索引基于0)


现在关于失焦(三个失焦事件中的一个失焦事件)检查日期是否小于或等于方法返回的天数。如果不小于或等于天,则发送警报消息或其他信息。

用所有可能的值填充所有三个,如日期1到31、一月到十二月以及1950年到今年

使用以下选项检查所有三个选项失去焦点时的有效日期

DateTime.DaysInMonth(int year, int month);
对于年份,您可以直接将所选项目转换为int;对于月份,您可以找到selectedindex+1(因为索引基于0)


现在,关于失去焦点(所有三个失去焦点的事件中都有一个失去焦点事件)检查日期是否小于或等于方法返回的天数。如果不是,则显示警报消息或其他信息。

我想您是否要根据月份规格填充日期组合框值。 您可以尝试此代码。它可能会对您有所帮助。您可以在该代码中编写CMBOX 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());
    }
   }
if(cmbMonth.Text==“feb”)//if(cmbMonth.SelectedIndex.Equals(指定索引))
{

对于(i=0;i我想您是否希望根据月份规范填充日期组合框值。 您可以尝试此代码。它可能会对您有所帮助。您可以在该代码中编写CMBOX 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());
    }
   }
if(cmbMonth.Text==“feb”)//if(cmbMonth.SelectedIndex.Equals(指定索引))
{
对于(i=0;iwrite
for循环语句中项的数目

像 cmbDay.Items.Add(i.ToString()); cmbDay.Items.Add(i.ToString());写入 for循环语句中项的数目

像 cmbDay.Items.Add(i.ToString());
cmbDay.Items.Add(i.ToString())是的,这是我想发布的更简单的解决方案。我不理解在所有三个组合框上保留单个失去焦点事件的概念。如何做到。编写一个方法并将所有组合框挂起以引用同一事件。是的,这是我想发布的更简单的解决方案。我不理解在一个组合框上保留单个失去焦点事件的概念ll三个combobox。如何操作。编写一个方法并钩住所有combobox以引用同一事件。