gpt4 book ai didi

c# PropertyGrid 限制对 List 项的编辑

转载 作者:行者123 更新时间:2023-11-30 17:57:42 24 4
gpt4 key购买 nike

我有一个使用 C#/.NET 中的 PropertyGrid 的应用

PropertGrid坚持MyAppObject如下所示的类/对象..

class MyAppObject
{
private List<MyObject> oItems;

public List<MyObject> Items
{
get { return this.oItems; }

}

}

到目前为止,它运行良好,简单明了。我希望属性网格允许用户查看项目,它做得很好,但是当您在 PropertyGrid 中选择属性时,对话框还允许添加更多 List<MyObject> items .

我不想要这个,我只想能够显示项目,而不是编辑它们。

我认为不提供 setter ( set { this.oItems = value; } ):

like this

然后它不允许添加按钮。

希望这是有道理的,屏幕截图显示了对话框,我圈出了要删除的按钮。

谢谢

最佳答案

如果您将其公开为只读列表,它应该可以满足您的需要:

[Browsable(false)]
public List<MyObject> Items
{
get { return this.oItems; }
}
// this (below) is the one the PropertyGrid will use
[DisplayName("Items")]
public ReadOnlyCollection<MyObject> ReadOnlyItems
{
get { return this.oItems.AsReadOnly(); }
}

请注意,单个对象(MyObject 实例)的成员仍然是可编辑的,除非您将它们装饰为 [ReadOnly(true)]

正如您所注意到的,setter 不是添加/删除/编辑项目所必需的。这是因为网格仍然可以完全访问 .Add.Remove 和索引器 (list[index]) 操作。

关于c# PropertyGrid 限制对 List<T> 项的编辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13026050/

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