| File: System\Windows\Forms\Controls\ImageList\ImageList.Indexer.cs | Web Access |
| Project: src\winforms\src\System.Windows.Forms\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. namespace System.Windows.Forms; public sealed partial class ImageList { /// <summary> /// This class is for classes that want to support both an ImageIndex /// and ImageKey. We want to toggle between using keys or indexes. /// Default is to use the integer index. /// </summary> internal class Indexer { // Used by TreeViewImageIndexConverter to show "(none)" internal const int NoneIndex = -2; // Used by generally across the board to indicate unset image internal const string DefaultKey = ""; internal const int DefaultIndex = -1; private string _key = DefaultKey; private int _index = DefaultIndex; private bool _useIntegerIndex = true; public virtual ImageList? ImageList { get; set; } [AllowNull] public virtual string Key { get => _key; set { _index = DefaultIndex; _key = value ?? DefaultKey; _useIntegerIndex = false; } } public virtual int Index { get => _index; set { _key = DefaultKey; _index = value; _useIntegerIndex = true; } } public virtual int ActualIndex { get { if (_useIntegerIndex) { return Index; } if (ImageList is not null) { return ImageList.Images.IndexOfKey(Key); } return DefaultIndex; } } } }