切换表达式和操作符错误

时间:2017-03-01 21:22:12

标签: c# winforms

我有两行代码给我错误:

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'类型的操作数和'对象'

如何解决这些问题?

注意:还有更多的很多代码,因为它太大了我不能把它留下来,但如果以前的代码是需要,请通知我

3 个答案:

答案 0 :(得分:3)

在这两种情况下,您都需要将combobox.SelectedValue转换为其他内容,即

int choice = (int)combobox.SelectedValue;

取决于SelectedValue的任何类型。

这是因为combobox.SelectedValueobject,因此您需要将其强制转换为数据类型。有关ComboBox属性的详细信息,请See here

答案 1 :(得分:1)

object

有关详情,请参阅here

您正在将border传递给交换机,但案例是整数。您需要将所选值解析为整数。也许直接演员会奏效,但我不知道那个组合框中有什么。

答案 2 :(得分:1)

错误不言自明。 第一个来自SelectedValue返回Object,这在switch语句中是不允许的。您最有可能使用SelectedIndex 第二个意味着您无法将intObject进行比较 CategoryIndexint,您无法将其与SelectedValue进行比较,SelectedIndex是一个对象,就像第一种情况一样。再次使用SelectedValue应该修复它 如果Main实际上是您应该使用的属性(例如在数据绑定之后),则将对象强制转换为int以获取正确的类型(或解析)。