File: System\Windows\Forms\Controls\PropertyGrid\PropertyGridInternal\PropertiesTab.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.ComponentModel;
using System.Windows.Forms.Design;
 
namespace System.Windows.Forms.PropertyGridInternal;
 
public class PropertiesTab : PropertyTab
{
    public override string TabName => SR.PBRSToolTipProperties;
 
    public override string HelpKeyword => "vs.properties"; // do not localize.
 
#pragma warning disable CA1725 // Parameter names should match base declaration - publicly shipped API
    public override PropertyDescriptor? GetDefaultProperty(object obj)
#pragma warning restore CA1725
    {
        PropertyDescriptor? defaultProperty = base.GetDefaultProperty(obj);
 
        if (defaultProperty is null)
        {
            PropertyDescriptorCollection? properties = GetProperties(obj);
            if (properties is not null)
            {
                for (int i = 0; i < properties.Count; i++)
                {
                    if ("Name".Equals(properties[i].Name))
                    {
                        defaultProperty = properties[i];
                        break;
                    }
                }
            }
        }
 
        return defaultProperty;
    }
 
    public override PropertyDescriptorCollection? GetProperties(object component, Attribute[]? attributes)
        => GetProperties(context: null, component, attributes);
 
    public override PropertyDescriptorCollection? GetProperties(ITypeDescriptorContext? context, object component, Attribute[]? attributes)
    {
        attributes ??= [BrowsableAttribute.Yes];
 
        if (context is null)
        {
            return TypeDescriptor.GetProperties(component, attributes);
        }
 
        TypeConverter typeConverter = context.PropertyDescriptor is null
            ? TypeDescriptor.GetConverter(component)
            : context.PropertyDescriptor.Converter;
 
        return typeConverter is null || !typeConverter.GetPropertiesSupported(context)
            ? TypeDescriptor.GetProperties(component, attributes)
            : typeConverter.GetProperties(context, component, attributes);
    }
}