C# 使用PropertyGrid

C# 使用PropertyGrid,c#,winforms,C#,Winforms,我有一个有两个属性网格的表单。 第一个网格的SelectedObject属性设置为包含项对象。第二个设置为项。测试 public MainForm() { InitializeComponent(); Item item = new Item(); propertyGrid1.SelectedObject = item; propertyGrid2.SelectedObject = item.Test; } 这是项类的结构: public class Item

我有一个有两个属性网格的表单。 第一个网格的
SelectedObject
属性设置为包含
对象。第二个设置为
项。测试

public MainForm()
{
    InitializeComponent();

    Item item = new Item();
    propertyGrid1.SelectedObject = item;
    propertyGrid2.SelectedObject = item.Test;
}
这是
类的结构:

public class Item
{
    List<int> _test = new List<int>();

    public List<int> Test
    {
        get { return _test; }
        set { _test = value; }
    }
}
公共类项目
{
列表_test=新列表();
公开列表测试
{
获取{return\u test;}
设置{u test=value;}
}
}
下面是UI的外观:


我的问题是,在网格1中,
Test
属性为什么显示在Int32集合编辑器中,而在网格2中它看起来不同?他们指向同一个物体,对吗?如何使网格2在Int32集合编辑器中显示
Test
属性

在第一个窗口中,显示一个对象,该对象有一个名为
Test
的成员,即集合;在第二个窗口中显示集合本身-集合不知道名称

Test
不是集合的名称;它是(访问时)返回集合的属性的名称

在代码方面(仅作说明,请注意-这里真正的内容都是
PropertyDescriptor
etc):

现在,此对象有一个名为
Test
的属性,如果给定“Test”,我们可以获得集合:

var collection = obj.Test; // at this point, we have all three

但是,从变量
集合
(实际上从变量
集合
)引用的对象中,完全不可能获得字符串“Test”。事实上,公开此集合的任何对象或对象集上实际上可能有零个、一个或任意数量的属性。

感谢您的解释。如果我想让grid 2显示属性测试的内容(如Int32集合编辑器中显示的内容),我该如何做?可能吗?
var collection = obj.Test; // at this point, we have all three