我有两行代码给我错误:
private void combobox1_SelectedIndexChanged(object sender, EventArgs e)
{
switch (combobox1.SelectedValue)
{
case 0:
var item = items.Where(category => category.CategoryIndex == 0);
foreach (var i in item)
{
listbox.Items.Add(new Items { CategoryIndex = i.CategoryIndex, ItemDesc = i.ItemDesc, ItemName = i.ItemName });
}
break;
case 1:
item = items.Where(category => category.CategoryIndex == 1);
foreach (var i in item)
{
listbox.Items.Add(new Items { CategoryIndex = i.CategoryIndex, ItemDesc = i.ItemDesc, ItemName = i.ItemName });
}
break;
继承人的第二个:
private void listbox_SelectedIndexChanged(object sender, EventArgs e)
{
var item = items.Where(category => category.CategoryIndex == listbox.SelectedValue && (itemName => itemName.ItemName == listbox.SelectedItem.ToString()));
listbox.Text = item.ItemName;
desrciption_label.Text = item.ItemDesc;
}
第一个代码中的错误位于
switch (combobox.SelectedValue)
错误说明:
开关表达式或大小写标签必须是bool,char,string,integral,enum或相应的可空类型_
第二个代码中的错误位于
category.CategoryIndex == listbox.SelectedValue
此错误表明:
运营商' =='不能应用于' int'类型的操作数和'对象'
如何解决这些问题?
注意:还有更多的很多代码,因为它太大了我不能把它留下来,但如果以前的代码是需要,请通知我
答案 0 :(得分:3)
在这两种情况下,您都需要将combobox.SelectedValue
转换为其他内容,即
int choice = (int)combobox.SelectedValue;
取决于SelectedValue
的任何类型。
这是因为combobox.SelectedValue
是object
,因此您需要将其强制转换为数据类型。有关ComboBox属性的详细信息,请See here。
答案 1 :(得分:1)
答案 2 :(得分:1)
错误不言自明。
第一个来自SelectedValue
返回Object
,这在switch
语句中是不允许的。您最有可能使用SelectedIndex
第二个意味着您无法将int
与Object
进行比较
CategoryIndex
是int
,您无法将其与SelectedValue
进行比较,SelectedIndex
是一个对象,就像第一种情况一样。再次使用SelectedValue
应该修复它
如果Main
实际上是您应该使用的属性(例如在数据绑定之后),则将对象强制转换为int以获取正确的类型(或解析)。