// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. namespace System.Windows.Forms.PropertyGridInternal; internal class ArrayElementGridEntry : GridEntry { protected int _index; public ArrayElementGridEntry(PropertyGrid ownerGrid, GridEntry parent, int index) : base(ownerGrid, parent) { _index = index; SetFlag(Flags.RenderReadOnly, parent.EntryFlags.HasFlag(Flags.RenderReadOnly) || parent.ForceReadOnly); } public override GridItemType GridItemType => GridItemType.ArrayValue; public override bool IsValueEditable => ParentGridEntry?.IsValueEditable ?? false; public override string PropertyLabel => $"[{_index}]"; public override Type? PropertyType => ParentGridEntry?.PropertyType?.GetElementType(); public override object? PropertyValue { get { object? owner = GetValueOwner(); Debug.Assert(owner is Array, "Owner is not array type!"); return ((Array)owner).GetValue(_index); } set { object? owner = GetValueOwner(); Debug.Assert(owner is Array, "Owner is not array type!"); ((Array)owner).SetValue(value, _index); } } public override bool ShouldRenderReadOnly => ParentGridEntry?.ShouldRenderReadOnly ?? false; } |