gpt4 book ai didi

c# - 禁用收集

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

我有一个包含一些公共(public)字段的类,我想在表单的 PropertyGrid 中显示这些字段:

public class FileInfo
{
...

[DisplayName("Messages")]
public Collection<MessageInfo> MessageInfos { get; set; }
}

问题是我还想为此类的某些实例禁用 Collection,因此用户甚至无法进入其编辑器。我需要通过代码来实现它,而不是通过设计师。

即使我通过添加属性 [ReadOnly(true)] 将此字段设置为只读,它也将允许用户通过按 (...) 进入其编辑器:

enter image description here

最佳答案

如果你定义一个自定义的 UITypeEditor 就可以做到覆盖标准 CollectionEditor ,像这样:

    public class FileInfo
{
[DisplayName("Messages")]
[Editor(typeof(MyCustomCollectionEditor), typeof(UITypeEditor))]
public Collection<MessageInfo> MessageInfos { get; set; }
}

public class MyCustomCollectionEditor : CollectionEditor // needs a reference to System.Design.dll
{
public MyCustomCollectionEditor(Type type)
: base(type)
{
}

public override UITypeEditorEditStyle GetEditStyle(ITypeDescriptorContext context)
{
if (DontShowForSomeReason(context)) // you need to implement this
return UITypeEditorEditStyle.None; // disallow edit (hide the small browser button)

return base.GetEditStyle(context);
}
}

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

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