| File: System\Windows\Forms\Dialogs\CommonDialogs\SpecialFolderEnumConverter.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. using System.Collections; using System.ComponentModel; namespace System.Windows.Forms; internal partial class SpecialFolderEnumConverter : EnumConverter { public SpecialFolderEnumConverter( [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicParameterlessConstructor | DynamicallyAccessedMemberTypes.PublicFields)] Type type) : base(type) { } /// <summary> /// Personal appears twice in type editor because its numeric value matches with MyDocuments. /// This code filters out the duplicate value. /// </summary> public override StandardValuesCollection GetStandardValues(ITypeDescriptorContext? context) { StandardValuesCollection values = base.GetStandardValues(context); List<object> list = []; bool personalSeen = false; for (int i = 0; i < values.Count; i++) { object? currentItem = values[i]; if (currentItem is Environment.SpecialFolder specialFolder && specialFolder.Equals(Environment.SpecialFolder.Personal)) { if (!personalSeen) { personalSeen = true; list.Add(currentItem); } } else { Debug.Assert(currentItem is not null); if (currentItem is not null) { list.Add(currentItem); } } } return new StandardValuesCollection(list); } protected override IComparer Comparer => SpecialFolderEnumComparer.Default; }