|
// 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);
}
}
|