using System.ComponentModel; namespace System.Windows.Forms { public partial class ListView { public class ListViewItemCollection : BindingList { private ListView owner { get; } public new ListViewItem Add(ListViewItem item) { base.Add(item); item.SetOwner(owner); return item; } public ListViewItem Add(string text) => Add(text, -1); public ListViewItem Add(string text, int imageIndex) => Add(new ListViewItem() { Text = text, ImageIndex = imageIndex }); public void AddRange(ListViewItem[] items) { foreach (var item in items) Add(item); } public new void Remove(ListViewItem item) { owner.DoItemRemove(item); base.Remove(item); } public new void RemoveAt(int index) { owner.DoItemRemove(this[index]); base.RemoveAt(index); } public new void Clear() { owner.DoItemsClear(); base.Clear(); } internal ListViewItemCollection(ListView owner) => this.owner = owner; } } }