比较列表框中选择的值与类中的值的条件

本文关键字:条件 选择 列表 比较 | 更新日期: 2023-09-27 18:03:52

我正在尝试创建一个if条件,其中我将所选值与我在另一个类中创建的名称值进行比较。

//我用以下代码填充列表:

module.Add(new Modules(code, name, semester, preReq, lSlot, tSlot, info));

//使用以下代码填充列表框:

foreach (object o in module)
        {
            Modules m = (Modules)o;
            selectionBox.Items.Add(m);
            //foreach statement loops for object in module and adds the name to the listbox
        }

//条件如下:

if (selectionBox.SelectedItem.Equals(((Modules)selectionBox.Items[i]).mName))

所以我的问题是,如果条件将是有效的,我能够比较列表框选择的值和模块名称值的索引?

比较列表框中选择的值与类中的值的条件

selectionBox中的每一项都是一个Module实例,你不能将整个对象与另一个或同一类的相同实例的单个属性进行比较。

试着划分你的测试

 Modules m = selectionBox.SelectedItem as Modules;
 if(m.nName == (selectionBox.Items[i] as Modules).mName)
     ......

当然,如果你想比较selectedItems的mName属性和selectionbox中任意[i]项的mName属性,这是正确的。如果你想比较对象实例,那么比较应该是

 Modules selected = selectionBox.SelectedItem as Modules;
 Modules aModule = selectionBox.Items[i] as Modules;
 if (selected.Equals(aModule))
    .....

EDIT: Using a List<Modules>

List<Modules> modulesList = new List<Modules>();
modulesList.Add(new Modules(code, name, semester, preReq, lSlot, tSlot, info));
.....    
foreach(Modules m in modulesList)
{
     // No cast needed here...
     selectionBox.Items.Add(m);
}
.....
// Find an element....
if(modulesList.Contains(m))
    ....