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