如何在PropertyGrid中查看对象属性

本文关键字:对象 属性 PropertyGrid | 更新日期: 2023-09-27 17:52:16

现在我有一个类型A的对象,它正在被PropertyGrid查看。然而,它的一个属性是B类型的,B类型的属性是不可扩展的。

a)我可以扩展自定义对象属性b)这些更改被绑定到该属性

这是我到目前为止的代码:

using System;
using System.Windows.Forms;
using System.ComponentModel;
namespace PropGridTest
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            A a = new A
            {
                Foo = "WOO HOO!",
                Bar = 10,
                BooFar = new B
                {
                    FooBar = "HOO WOO!",
                    BarFoo = 100
                }
            };
            propertyGrid1.SelectedObject = a;
        }
    }
    public class A
    {
        public string Foo { get; set; }
        public int Bar { get; set; }
        public B BooFar { get; set; }
    }
    public class B
    {
        public string FooBar { get; set; }
        public int BarFoo { get; set; }
    }
}

如何在PropertyGrid中查看对象属性

您可以使用ExpandableObjectConverter类。

该类增加了对属性的支持对象上的方法和属性由TypeConverter提供。使一种属性可扩展在PropertyGrid中指定它标准的TypeConverter的实现GetPropertiesSupported和getproperty .

要使用此转换器,使用 TypeConverterAttribute 修饰所讨论的属性,并将typeof(ExpandableObjectConverter)作为构造函数参数。

public class A
{
    public string Foo { get; set; }
    public int Bar { get; set; }
    [TypeConverter(typeof(ExpandableObjectConverter))]
    public B BooFar { get; set; }
}