File: System\Windows\Forms\Controls\DataGridView\DataGridViewSelectedCellCollection.cs
Web Access
Project: src\src\System.Windows.Forms\src\System.Windows.Forms.csproj (System.Windows.Forms)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
using System.Collections;
using System.ComponentModel;
 
namespace System.Windows.Forms;
 
/// <summary>
///  Represents a collection of selected <see cref="DataGridViewCell"/> objects in the <see cref="DataGridView"/>
///  control.
/// </summary>
[ListBindable(false)]
public class DataGridViewSelectedCellCollection : BaseCollection, IList
{
    private readonly List<DataGridViewCell> _items = [];
 
    int IList.Add(object? value)
    {
        throw new NotSupportedException(SR.DataGridView_ReadOnlyCollection);
    }
 
    void IList.Clear()
    {
        throw new NotSupportedException(SR.DataGridView_ReadOnlyCollection);
    }
 
    bool IList.Contains(object? value) => ((IList)_items).Contains(value);
 
    int IList.IndexOf(object? value) => ((IList)_items).IndexOf(value);
 
    void IList.Insert(int index, object? value)
    {
        throw new NotSupportedException(SR.DataGridView_ReadOnlyCollection);
    }
 
    void IList.Remove(object? value)
    {
        throw new NotSupportedException(SR.DataGridView_ReadOnlyCollection);
    }
 
    void IList.RemoveAt(int index)
    {
        throw new NotSupportedException(SR.DataGridView_ReadOnlyCollection);
    }
 
    bool IList.IsFixedSize => true;
 
    bool IList.IsReadOnly => true;
 
    object? IList.this[int index]
    {
        get { return _items[index]; }
        set { throw new NotSupportedException(SR.DataGridView_ReadOnlyCollection); }
    }
 
    void ICollection.CopyTo(Array array, int index) => ((ICollection)_items).CopyTo(array, index);
 
    int ICollection.Count => _items.Count;
 
    bool ICollection.IsSynchronized => false;
 
    object ICollection.SyncRoot => this;
 
    IEnumerator IEnumerable.GetEnumerator() => _items.GetEnumerator();
 
    internal DataGridViewSelectedCellCollection()
    {
    }
 
    protected override ArrayList List
    {
        get
        {
            return ArrayList.Adapter(_items);
        }
    }
 
    public DataGridViewCell this[int index]
    {
        get
        {
            return _items[index];
        }
    }
 
    /// <summary>
    ///  Adds a <see cref="DataGridViewCell"/> to this collection.
    /// </summary>
    internal int Add(DataGridViewCell dataGridViewCell)
    {
        Debug.Assert(!Contains(dataGridViewCell));
        return ((IList)_items).Add(dataGridViewCell);
    }
 
    /// <summary>
    ///  Adds all the <see cref="DataGridViewCell"/> objects from the provided linked list to this collection.
    /// </summary>
    internal void AddCellLinkedList(DataGridViewCellLinkedList dataGridViewCells)
    {
        Debug.Assert(dataGridViewCells is not null);
        foreach (DataGridViewCell dataGridViewCell in dataGridViewCells)
        {
            Debug.Assert(!Contains(dataGridViewCell));
            _items.Add(dataGridViewCell);
        }
    }
 
    [EditorBrowsable(EditorBrowsableState.Never)]
    public void Clear()
    {
        throw new NotSupportedException(SR.DataGridView_ReadOnlyCollection);
    }
 
    /// <summary>
    ///  Checks to see if a DataGridViewCell is contained in this collection.
    /// </summary>
    public bool Contains(DataGridViewCell dataGridViewCell) => ((IList)_items).Contains(dataGridViewCell);
 
    public void CopyTo(DataGridViewCell[] array, int index) => _items.CopyTo(array, index);
 
    [EditorBrowsable(EditorBrowsableState.Never)]
    public void Insert(int index, DataGridViewCell dataGridViewCell)
    {
        throw new NotSupportedException(SR.DataGridView_ReadOnlyCollection);
    }
}