ListViewItemsをあるListViewから別のListViewにコピーしています。お気に入り:
foreach (ListViewItem item in usersListView.SelectedItems) {
selectedUsersListView.Items.Add((ListViewItem)item.Clone());
}
ListView.ItemCollection.Contains()を使用して、アイテムがすでにコピーされているかどうかを判断したい場合、常にfalseになります。
foreach (ListViewItem item in usersListView.SelectedItems) {
if (!selectedUsersListView.Items.Contains(item) { // always !false
selectedUsersListView.Items.Add((ListViewItem)item.Clone());
}
}
私は自分の問題を解決するために次のことをしました:
foreach (ListViewItem item in usersListView.SelectedItems) {
ListViewItem newItem = (ListViewItem)item.Clone();
newItem.Name = newItem.Text;
if (!selectedUsersListView.Items.ContainsKey(newItem.Name) { // this works
selectedUsersListView.Items.Add(newItem);
}
}
したがって、これで問題が解決することは問題ありませんが、ListView.ItemCollection.Contains()が機能しない理由はまだわかりません...
ListView.ItemCollection.Contains()は、アイテムがすでに存在するかどうかをどのように識別しますか?
ListViewItemsをそのListView.ItemCollectionに初期化するにはどうすればよいですか。contains()(ListView.ItemCollection.ContainsKey()ではない)はそれらを識別できますか?