Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将listbox所选值与类中的值进行比较的If条件_C#_Winforms_If Statement_Listboxitem - Fatal编程技术网

C# 将listbox所选值与类中的值进行比较的If条件

C# 将listbox所选值与类中的值进行比较的If条件,c#,winforms,if-statement,listboxitem,C#,Winforms,If Statement,Listboxitem,我正在尝试创建一个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);

我正在尝试创建一个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
        }
//我使用以下代码填充列表框:

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))

因此,我的问题是,如果条件对我来说是有效的,以便能够比较listbox选定值和模块名称值的索引,该怎么办?

selectionBox中的每个项目都是模块实例,您不能将整个对象与同一类的另一个或同一实例的单个属性进行比较

试着划分你的测试

 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))
    .....
编辑:使用
列表

List modulesList=new List();
添加(新模块(代码、名称、学期、预申请、lSlot、tSlot、信息));
.....    
foreach(模块列表中的模块m)
{
//这里不需要演员。。。
选择框。项目。添加(m);
}
.....
//找到一个元素。。。。
if(模块列表包含(m))
....

选择框中的每个项目都是模块实例,您无法将整个对象与同一类的另一个或同一实例的单个属性进行比较

试着划分你的测试

 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))
    .....
编辑:使用
列表

List modulesList=new List();
添加(新模块(代码、名称、学期、预申请、lSlot、tSlot、信息));
.....    
foreach(模块列表中的模块m)
{
//这里不需要演员。。。
选择框。项目。添加(m);
}
.....
//找到一个元素。。。。
if(模块列表包含(m))
....

问题是……?如果条件对我来说是有效的,我可以比较listbox选择值和模块名称值的索引。我只是不明白你的意思……listbox选择的项目将是你添加的项目(即模块对象),你将它与mName进行比较-可能是字符串。。。从条件中删除“.mName”并重试…问题/问题是……?如果条件对我来说是有效的,我可以比较listbox选择的值和模块名称值的索引。我只是不理解你…listbox选择的项将是你添加的项(即模块对象)您正在将它与mName进行比较-很可能是一个字符串。。。从条件中删除“.mName”并重试…抱歉,我不确定“模块”是指类模块还是称为模块的列表?现在我有一个错误的答案。。。。。(模块是正确的)但是我建议区分名称以避免混淆。出于好奇,变量
模块
是如何定义的?它被定义为一个数组列表,现在看起来好像它已经工作了。当我输入您的代码时,只是一个拼写错误。很好。但是,如果可能的话,使用一个(模块的)列表,你将有更多的功能与通用列表抱歉,我不确定“模块”是指类模块还是称为模块的列表?现在我有一个错误的答案。。。。。(模块是正确的)但是我建议区分名称以避免混淆。出于好奇,变量
模块
是如何定义的?它被定义为一个数组列表,现在看起来好像它已经工作了。当我输入您的代码时,只是一个拼写错误。很好。但是,如果可能的话,使用一个(模块的)列表,您将有更多的功能和通用列表