2013-10-22 55 views
0

我從COL_NAME獲取值的集合中刪除選定的值,並增加每個值命名爲lstDisplay列表框,和值越來越added.At同一時間,我需要從COL_NAME去除相同的值在lstAvailable列表框,但值是加入lstDispaly在線訂購剛開,它不是從anotherList箱namde越來越刪除,lstAvailable從Control

  foreach (string drr in COl_name) 
      { 
       lstDispaly.Items.Add(drr); 
       lstAvailable.Items.Remove(drr); 
      } 

謝謝。

+0

請你介紹一些更多的上下文?您共享的代碼段對我來說看起來很好。問題可能在於別處。 –

+0

@ByteBlast:ya在lstDisplay中調試時,該值正在增加,但未在LstAvailable中刪除。 –

回答

0

它的手段,你有沒有lstAvailable DRR對象。 試着這樣做:

foreach (string drr in COl_name) 
      { 
       lstDispaly.Items.Add(drr); 
       lstAvailable.Items.RemoveAt(COL_name.IndexOf(drr)); 
      } 

或者你可以嘗試重寫equals()方法在你類

+0

@vitality:IndexOf沒有來,它顯示了一個錯誤。 –

+0

已更新,請嘗試像這樣 – Vitaliy

+0

但最好的方法是覆蓋您擁有的Witch集合中的Equals()方法。如果你這樣做,.Remove方法將工作正常 – Vitaliy

0

ListBox.ObjectCollection.Remove使用Equals確定兩個對象是相等的。所以如果你的對象(它是什麼類型的)不會毫無意義地覆蓋Equals你會比較引用。如果兩個對象不是相同的引用,那麼它們就不會被認爲是相等的。

另一個原因可能是ListBox包含的對象不是字符串,而是「刪除」字符串。那麼你可以使用RemoveAt

var obj = lstAvailable.Items.Cast<object>() 
    .Select((obj, index) => new{ obj, index }) 
    .FirstOrDefault(x => (x.obj == null ? "" : x.obj.ToString()) == drr); 
if(obj != null) 
    lstAvailable.Items.RemoveAt(obj.index); 
+0

空值即將到來。 –