gpt4 book ai didi

c# - PropertyGrid - 动态改变 ReadOnlyAttribute

转载 作者:太空宇宙 更新时间:2023-11-03 20:44:19 25 4
gpt4 key购买 nike

唉,又一个 PropertyGrid 问题。我以为我可以解决这个问题,直到我遇到了一个我实际上无法避免的问题。

我有一个 bool 属性,有时需要是只读的,有时需要根据从 TreeView 中选择的对象进行更改。

我的问题是如何动态更改属性的 ReadOnlyAttribute?显然,创建一个 bool 变量然后尝试将其设置为 ReadOnlyAttribute(boolVar) 是行不通的,现在我没有主意了。

我能想到的唯一解决方案是为项目创建单独的、几乎相同的类,其中该属性是可写的,一个是只读的,但这对我来说似乎有点不雅观。

帮助? :)

最佳答案

您可以通过实现 ICustomTypeDescriptor 向属性网格提供有关类属性的动态信息。 .

属性网格将调用 ICustomTypeDescriptor.GetProperties()然后您返回从 PropertyDescriptors 派生的对象集合.在您的实现中,您可以覆盖 PropertyDescriptor.IsReadOnly属性并实现您的逻辑。

这首先是相当多的工作,但它使您有可能动态返回属性名称和描述(有助于本地化)、动态将属性标记为只读、动态显示和隐藏属性,以及做很多其他有用的事情。

关于c# - PropertyGrid - 动态改变 ReadOnlyAttribute,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1440925/

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