c#中3个combox,我怎么在选定了前面两个年、月后,最后的combox下拉框就是对应月的日期数?

 我来答
huntagain2008
2012-06-01 · TA获得超过927个赞
知道小有建树答主
回答量:999
采纳率:0%
帮助的人:406万
展开全部
写个判断闰年的函数,监听comboBox的selectedindexchanged事件
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Collections;

namespace WindowsFormsApplication5
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
//判断闰年
private bool checkleap(int year)
{
if ((year % 4 == 0) && (year % 100 != 0) || (year % 400 == 0))
return true;
else
return false;
}
//绑定每月的天数

private void binddays(int year, int month)
{
int i;
ArrayList alday = new ArrayList();

switch (month)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
for (i = 1; i <= 31; i++)
alday.Add(i);
break;
case 2:
if (checkleap(year))
{
for (i = 1; i <= 29; i++)
alday.Add(i);
}
else
{
for (i = 1; i <= 28; i++)
alday.Add(i);
}
break;
case 4:
case 6:
case 9:
case 11:
for (i = 1; i <= 30; i++)
alday.Add(i);
break;

}
this.comboBox3.DataSource = alday;

}

private void Form1_Load(object sender, EventArgs e)
{
//绑定年

ArrayList alyear = new ArrayList();

int i;
for (i = 1900; i <= 2099; i++)

alyear.Add(i);

this.comboBox1.DataSource = alyear;

//绑定月

ArrayList almonth = new ArrayList();
for (i = 1; i <= 12; i++)
almonth.Add(i);

this.comboBox2.DataSource = almonth;

int year, month;
year = Int32.Parse(this.comboBox1.SelectedValue.ToString());
month = Int32.Parse(this.comboBox2.SelectedValue.ToString());
binddays(year, month);//绑定天
}

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
int year, month;

year = Int32.Parse(this.comboBox1.SelectedValue.ToString());

month = 1;

binddays(year, month);
}

private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)
{
int year, month;

year = Int32.Parse(this.comboBox1.SelectedValue.ToString());

month = Int32.Parse(this.comboBox2.SelectedValue.ToString());

binddays(year, month);
}
}
}
追问
为什么代码进去以后,调试后下选框里什么也没有呢?
追答
大哥,你没订阅事件好么?我这里没有手动建委托,design.cs里面有
combobox1.selectedindexchange += new 委托(函数)
你要在属性窗口里把事件都订阅了,那个闪电图标,别说你这都不知道~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友26c14b1d3
2012-06-01 · TA获得超过336个赞
知道小有建树答主
回答量:472
采纳率:0%
帮助的人:329万
展开全部
int days = DateTime.DaysInMonth(2012, 12); //2012年12月有days天
明白怎么处理了吧?
模式:
int year =..;
int month = ..;
int days = DateTime.DaysInMonth(year , month);
更多追问追答
追问
我开始时这样写来着,但是我怎么把我选定的前两个数据得到呢?意思我怎么把前两个combox的值转化为year和month
追答
private void cbb_Year_SelectedIndexChanged(object sender, EventArgs e)
{
cbb_day.Items.Clear();
if (cbb_month.SelectedItem!=null && cbb_month.SelectedItem.ToString() != string.Empty)
{
int year = Convert.ToInt32(cbb_Year.Text.ToString());
int month = Convert.ToInt32(cbb_month.Text.ToString());
for (int i = 0; i < DateTime.DaysInMonth(year, month); i++)
cbb_day.Items.Add((i+1).ToString());
}
}

private void cbb_month_SelectedIndexChanged(object sender, EventArgs e)
{
cbb_day.Items.Clear();
if (cbb_Year.SelectedItem!= null &&cbb_Year.SelectedItem.ToString() != string.Empty)
{
int year = Convert.ToInt32(cbb_Year.Text.ToString());
int month = Convert.ToInt32(cbb_month.Text.ToString());
for (int i = 0; i < DateTime.DaysInMonth(year, month); i++)
cbb_day.Items.Add((i + 1).ToString());
}
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tianx02
2012-06-01 · 超过51用户采纳过TA的回答
知道小有建树答主
回答量:182
采纳率:0%
帮助的人:135万
展开全部
只要通过对月份的判断就好了,
追问
不行二月是不一样的?我是初学者,能说清楚点吗?具体怎么邦定?
追答
string y=comboxY.text.tostring().trim();
int r;
if(y=="2")
r=29;
else if(y=="1" ||y=="3"||y=="5"||y="7"||y=="8"||y="10" ||y="12")
r=31;
else
r=30;
comboxR.items.clear();
for (int i=1;i<r+1;i++)
{ comboxR.items.add(i.tostring());
}
你用这段代码调试,我没在VS里测试,应该没什么大错
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式