gpt4 book ai didi

c# - 使用 PropertyGrid

转载 作者:太空宇宙 更新时间:2023-11-03 16:08:03 26 4
gpt4 key购买 nike

我有一个包含两个属性网格的表单。第一个网格的 SelectedObject 属性设置为包含 item 对象。而第二个设置为item.Test

public MainForm()
{
InitializeComponent();

Item item = new Item();
propertyGrid1.SelectedObject = item;
propertyGrid2.SelectedObject = item.Test;
}

这是 Item 类的结构:

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

public List<int> Test
{
get { return _test; }
set { _test = value; }
}
}

enter image description hereUI 的外观如下:

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

最佳答案

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

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

在代码方面(仅供说明,注意 - 这里真正的东西是所有 PropertyDescriptor 等):

var obj = new PropertyTest(); // the outer object

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

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

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

关于c# - 使用 PropertyGrid,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18531957/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com