簡體   English   中英

刪除ListViewItem集合中所有選定項目的最有效方法是什么?

[英]What is the most efficient way to delete all selected items in a ListViewItem collection?

我的用戶可以在ListView集合中選擇多個項目,這些項目配置為顯示詳細信息(即行列表)。

我想要做的就是添加一個Delete按鈕,將刪除所有選定的項目從ListViewItem與相關聯的集合ListView

ListView.SelectedItems提供了所選項的集合,但ListView.Items似乎沒有一個方法可以刪除整個范圍。 我必須遍歷范圍並逐個刪除它們,這可能會修改我正在迭代的集合。

所以,我基本上追求的是AddRange()的反面。

如果你有一個selectedItems的集合,你可以簡單地在每個集合上調用remove而不是迭代ListView。

ListViewItem上有一個名為Remove()的方法

ListView listview = <reference to ListView>;
foreach (ListViewItem item in listView.SelectedItems)
{
  item.Remove();
}

這將刪除所有項目的迭代,並僅刪除所選項目。

據我所知,除了單獨刪除它們之外別無他法。

ListView.BeginUpdate()ListView.EndUpdate()調用中包裝刪除算法。 這樣你就不會在每次刪除時重新獲得重畫的速度。

另外,如果你以相反的順序刪除它們,我相信底層結構將沒有那么做。

此外,如果您要刪除的項目數占項目總數的很大一部分,則可以通過清除列表並再次使用AddRange()其獲得更高的性能。

對我來說,在linq 2 sql中我使用:

mylist.Clear();

也許您可以嘗試以下方面的內容:

var ItemsToDelete = ... // wherever you get the collection of items to delete from
var RemainingItems = yourList.FindAll(delegate(ListItem x) {
  return !ItemsToDelete.Contains(x)
});
yourListView.DataSource = RemainingItems;
yourListView.DataBind();

或者只是將剩余的項目分配給現有的控件,或者您喜歡的任何內容。

(稍微編輯格式)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM