C# ComboBox控件 使用 SelectedValue取值时报错

博主因项目需求使用ComboBox的SelectedValue取绑定实际值时总报错,调试发现取出的值类型不符。在绑定列和列名大小写正常的情况下,推测与返回list字段过多有关。新建只含stuId、stuName的list绑定数据后,运行成功不再报错。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

因为项目需求使用CombiBox的SelectedValue取绑定的实际值,但总是报错

我的代码
List<student> list1 = new studentbll().GetAllstudent();
cboname.DisplayMember = "stuName";
cboname.ValueMember = "stuId";     
cboname.DataSource = list1;

stuId = Convert.ToInt32(cboname.SelectedValue.ToString());
//调用代码

调用的时候报类似下面的错误

System.InvalidCastException:“无法将类型为“Student.Model.student”的对象强制转换为类型“System.IConvertible”。”

通过调试发现,取出的值为并非我想得到的 int 类型的 stuId,而是一个 object 类型的student

后台sql server数据库代码
create table student
(
   stuId int identity(10000,1) primary key,
   stuName varchar(50) not null,
   gender varchar(2) not null check(gender='男' or gender='女'),
   classId int references Class(classId),
   phone varchar(20)
)


![调试结果](https://img-blog.csdnimg.cn/20190505124721345.png)

在绑定列和获取列名字大小写都正常的情况下,出现这样的错误,我觉得可能和返回list中过多字段有关,便又新建一个list 只放stuId、stuName用于DisplayMember显示值、ValueMember实际值 。使用这个新建的list来绑定数据,运行成功,不再报错。

修改如下
 List<student> list1 = new studentbll().GetAllstudent();
            List<student> List1 = new List<student>();
            foreach (var a in list1)
            {
                student stu = new student();
                stu.stuId = a.stuId;
                stu.stuName = a.stuName;
                List1.Add(stu);
                //重新定义List
            }
            cboname.DisplayMember = "stuName";
            cboname.ValueMember = "stuId";
            cboname.DataSource = List1;

本人新手,有错还望指点。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值