2013-03-13 57 views
1

我想做一個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)) 

所以我的問題是如果條件將是有效的我可以比較列表框選擇VA lue和模塊名稱值的索引?

+0

而問題/問題是......? – Blachshma 2013-03-13 23:42:10

+0

如果條件對我來說能夠比較列表框選定值和模塊名稱值的索引,該怎麼辦? – user2157179 2013-03-13 23:45:02

+0

我只是不明白你... – Areks 2013-03-13 23:46:42

回答

1

selectionBox中的每個項目都是一個Module實例,您無法將整個對象與同一個類的另一個或同一個實例的單個屬性進行比較。

試圖分裂測試

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

,如果你希望將selectedItems的MNAME性質比較反對任意[I]項中selectionbox一個MNAME屬性這是真的。如果你不是要比較的對象實例則比較應該是

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

編輯:使用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)) 
    .... 
+0

對不起,我'模塊'不確定你的意思是類或模塊名單模塊?正如現在我有一個錯誤 – user2157179 2013-03-13 23:50:27

+0

答案固定.....(模塊是正確的)但是,我建議區分名稱以避免混淆。只是爲了好奇,如何定義變量'module'? – Steve 2013-03-13 23:54:45

+0

它被定義爲一個數組列表,當我輸入你的代碼時,它看起來好像現在只是一個拼寫錯誤。 – user2157179 2013-03-13 23:57:14