如何在PropertyGrid中查看对象属性?

时间:2011-04-23 20:23:53

标签: c# view propertygrid expand

目前我有一个类型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; }
    }
}

1 个答案:

答案 0 :(得分:21)

您可以使用ExpandableObjectConverter类来实现此目的。

  

此类添加了对属性的支持   关于方法的对象和   TypeConverter提供的属性。   使一种属性可扩展   在PropertyGrid中,指定它   TypeConverter用于标准   的实现   GetPropertiesSupported和   的GetProperties。

要使用此转换器,请使用TypeConverterAttribute装饰相关属性,并将typeof(ExpandableObjectConverter)作为构造函数参数。

public class A
{
    public string Foo { get; set; }
    public int Bar { get; set; }

    [TypeConverter(typeof(ExpandableObjectConverter))]
    public B BooFar { get; set; }
}