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