2009-04-09 65 views
0
從列表框中刪除所選項目

到目前爲止,我已經找到2種方式來刪除選定的項目(WinForm的):比較不同的方法來從System.Windows.Forms.ListBox

1.

ListBox.SelectedObjectCollection tempCollection = new ListBox.SelectedObjectCollection(myListBox); 
for (int i = tempCollection.Count - 1; i >= 0; i--) 
{ 
    myListBox.Items.Remove(tempCollection[i]); 
} 

2.

while (myListBox.SelectedItems.Count > 0) 
{ 
    myListBox.Items.Remove(myListBox.SelectedItem); 
    // or 
    //myListBox.Items.Remove(myListBox.SelectedItems[0]); 
} 

第二種方式很容易理解,但第一種方法對我來說很奇怪。他們都爲我工作,我只想知道區別?

回答

0

第一種方式寫得很奇怪。它看起來很奇怪,因爲它倒退了。這是爲了不會打亂選定項目的集合。所選項目集合未完全創建,它是一個Enumerable集合,並且只有在您請求它們時項目纔會脫落。您不能使用foreach,因爲選中項目的集合在移除項目時會不斷變化。

我其實更喜歡第二種方式。此外,更容易讀取更容易維護。第一個讀取:獲取選定的項目,向後通過它們,從列表中刪除每個項目。

第二個讀取:當有選定的項目時,刪除第一個可用的選定項目。

更好的第二種方法。