| File: System\Windows\Forms\Design\ControlDesigner.DesignerControlCollection.cs | Web Access |
| Project: src\winforms\src\System.Windows.Forms.Design\src\System.Windows.Forms.Design.csproj (System.Windows.Forms.Design) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. #nullable disable using System.Collections; using System.ComponentModel; using System.ComponentModel.Design.Serialization; namespace System.Windows.Forms.Design; public partial class ControlDesigner { [ListBindable(false)] [DesignerSerializer(typeof(DesignerControlCollectionCodeDomSerializer), typeof(CodeDomSerializer))] internal class DesignerControlCollection : Control.ControlCollection, IList { private readonly Control.ControlCollection _realCollection; public DesignerControlCollection(Control owner) : base(owner) => _realCollection = owner.Controls; public override int Count => _realCollection.Count; object ICollection.SyncRoot => this; bool ICollection.IsSynchronized => false; bool IList.IsFixedSize => false; public new bool IsReadOnly => _realCollection.IsReadOnly; int IList.Add(object control) => ((IList)_realCollection).Add(control); public override void Add(Control c) => _realCollection.Add(c); public override void AddRange(params Control[] controls) => _realCollection.AddRange(controls); bool IList.Contains(object control) => ((IList)_realCollection).Contains(control); public new void CopyTo(Array dest, int index) => _realCollection.CopyTo(dest, index); public override bool Equals(object other) => _realCollection.Equals(other); public new IEnumerator GetEnumerator() => _realCollection.GetEnumerator(); public override int GetHashCode() => _realCollection.GetHashCode(); int IList.IndexOf(object control) => ((IList)_realCollection).IndexOf(control); void IList.Insert(int index, object value) => ((IList)_realCollection).Insert(index, value); void IList.Remove(object control) => ((IList)_realCollection).Remove(control); void IList.RemoveAt(int index) => ((IList)_realCollection).RemoveAt(index); object IList.this[int index] { get => ((IList)_realCollection)[index]; set => throw new NotSupportedException(); } public override int GetChildIndex(Control child, bool throwException) => _realCollection.GetChildIndex(child, throwException); public override void SetChildIndex(Control child, int newIndex) => _realCollection.SetChildIndex(child, newIndex); public override void Clear() { for (int i = _realCollection.Count - 1; i >= 0; i--) { if (_realCollection[i] is not null && _realCollection[i].Site is not null && TypeDescriptor.GetAttributes(_realCollection[i]).Contains(InheritanceAttribute.NotInherited)) { _realCollection.RemoveAt(i); } } } } }