这是我的想法,但是会报错:无法将类型“string”转换为“int”using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;public partial class Default4 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            ArrayList arrn = new ArrayList();
            for (int i = 2008; i <= 2030; i++) arrn.Add(i.ToString()); 
            nian.DataSource = arrn;
            nian.DataBind();
            ArrayList arry = new ArrayList();
            arry.Add("月");
            for (int i = 1; i <= 12; i++) arry.Add(i.ToString());
            yue.DataSource = arry;
            yue.DataBind();
        }
    }
    protected void yue_SelectedIndexChanged(object sender, EventArgs e)
    {
        ArrayList arrr = new ArrayList();
        arrr.Add("日");
        switch (yue.SelectedValue)
        {
            case "2":
            if ((int)(nian.SelectedValue))%4==0)//换成 if ((Convert.ToInt32(nian.SelectedValue))%4==0)也不行
            {
                for (int i = 1; i <= 29; i++) arrr.Add(i.ToString());
                ri.DataSource = arrr;
                ri.DataBind();
            }
            else
                for (int i = 1; i <= 28; i++) arrr.Add(i.ToString()); 
                ri.DataSource = arrr;
                ri.DataBind();
                break;   //还有这里好像也有问题,大鸟们帮忙看一下。谢谢啦
            case "1":
            case "3":
            case "5":
            case "7":
            case "8":
            case "10":
            case "12":
                for (int i = 1; i <= 31; i++) arrr.Add(i.ToString());
                ri.DataSource = arrr;
                ri.DataBind();
                break;
            case "4":
            case "6":
            case "9":
            case "11":
                for (int i = 1; i <= 30; i++) arrr.Add(i.ToString());
                ri.DataSource = arrr;
                ri.DataBind();
                break;
        }
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        string tstr1 = nian.SelectedValue.ToString() +"-"+ yue.SelectedValue.ToString() +"-"+ ri.SelectedValue.ToString();
        Label1.Text = tstr1;
    }
}

解决方案 »

  1.   

    直接 DateTime.IsLeapYear(2010)不就好了
      

  2.   

    系统就有这方法:
    DateTime.IsLeapYear(year);
      

  3.   


    噢,原来
    那么为什么我不能把string类型转换成int类型的?
    鸟哥们举些例子好么?
      

  4.   

    string year = "2002";
    int nYear = int.Parse(year);
    switch (int.Parse(yue.SelectedValue))
    {
        case 2:
      

  5.   

    因为我还是想从一个名为nian的DropDownList被选中的值来判断。
    所以还是要把nian.SelectedValue转化为年或者int
      

  6.   

     case "2":
                if ((int)(nian.SelectedValue))%4==0)
    string 不能直接强制转换成int
    用int.Parse(nian.SelectedValue)
      

  7.   

    string转换成int是强转,不能使用int a=(int)string的形式,只能用ConvertTo或者int.Parse()
      

  8.   

    关于ConvertTo,怎么用呢?举个例子行么
      

  9.   

    nian.SelectedValue取的是一个字符串,你得再转换一次(int)nian.SelectedValue差不多这样就OK了
      

  10.   

    搞懂了DateTime.IsLeapYear(year)的用法,再加上int nYear = int.Parse(year)就可以了,呵呵
    谢谢各位。
      

  11.   

    一知半解,纯属误导...强制转换就是显式转换,需要使用强制转换运算符...其特征是源变量和目标变量兼容,但由于目标变量的类型大小比源变量小(或者目标变量是源变量的一个基类),因此存在数据丢失的风险...也就是说,“int a=(int)string的形式”就是强制转换...“用ConvertTo或者int.Parse()”叫做“使用帮助程序类的转换”不能叫强制转换,用于在不兼容的类型之间进行转换...