A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1.     public partial class Form1 : Form
  2.     {
  3.         public Form1()
  4.         {
  5.             InitializeComponent();
  6.         }

  7.         private void Form1_Load(object sender, EventArgs e)
  8.         {
  9.             using (SqlConnection conn = new SqlConnection(@"Data source=.\SQLEXPRESS;AttachDBFilename=|DataDirectory|\DB.mdf;
  10.             integrated Security=True;User Instance=True"))
  11.             {
  12.                 conn.Open();
  13.                 using (SqlCommand cmd = conn.CreateCommand())
  14.                 {
  15.                     cmd.CommandText = "select * from Province";
  16.                     using (SqlDataReader dataReader = cmd.ExecuteReader())
  17.                     {
  18.                         while (dataReader.Read())
  19.                         {
  20.                             Province item = new Province();
  21.                             item.Name = dataReader.GetString(dataReader.GetOrdinal("proName"));
  22.                             item.Id = dataReader.GetInt32(dataReader.GetOrdinal("proId"));
  23.                             cmbProvince.Items.Add(item.Name);
  24.                         }
  25.                     }
  26.                 }
  27.             }
  28.         }

  29.         private void cmbProvince_SelectedIndexChanged(object sender, EventArgs e)
  30.         {
  31.             Province item = (Province)cmbProvince.SelectedItem;            //此句报错
  32.             int proid = item.Id;
  33.             using (SqlConnection conn = new SqlConnection(@"Data source=.\SQLEXPRESS;AttachDBFilename=|DataDirectory|\DB.mdf;
  34.             integrated Security=True;User Instance=True"))
  35.             {
  36.                 conn.Open();
  37.                 using (SqlCommand cmd = conn.CreateCommand())
  38.                 {
  39.                     cmd.CommandText = "select * from City where proId=proid";
  40.                     cmd.Parameters.Add(new SqlParameter("proId", proid));
  41.                     using (SqlDataReader dataReader = cmd.ExecuteReader())
  42.                     {
  43.                         while (dataReader.Read())
  44.                         {
  45.                             string ctName = dataReader.GetString(dataReader.GetOrdinal("cityName"));
  46.                             cmbCity.Items.Add(ctName);
  47.                         }
  48.                     }
  49.                 }
  50.             }

  51.         }
  52.     }
  53.     class Province
  54.     {
  55.         public string Name { get; set; }
  56.         public int Id { get; set; }
  57.     }
复制代码
跟着视频一块做的,但到了这里却报错了。明明是跟着老师一步一步做的可为什么他的没事而我的却报错了呢?
报错如下:


在线坐等求解~~~~~~~~~~~~~~~~~

2 个回复

正序浏览
本帖最后由 李后量 于 2012-9-14 18:47 编辑
王海舟 发表于 2012-9-14 18:01
出现这个错误主要是由于你的第24行代码造成的。
cmbProvince.Items.Add(item.Name);
你是将Province类型的 ...

哦,我明白了,怪不得呢,谢谢啦
回复 使用道具 举报
出现这个错误主要是由于你的第24行代码造成的。
cmbProvince.Items.Add(item.Name);
你是将Province类型的对象的Name属性添加到了ComboBox控件中,而没有将对象添加到这个控件中。
所以你使用cmbProvince.SelectedItem得到的是Province实例化对象的属性,而不是这个对象本身
Province类型实例化对象的Name属性就是string类型,你是无法将一个string类型强制转换成一个Province类型的,所以在代码的33行才会报错。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马