如何使 CollectionEditor 成为无模式的?

How do you make a CollectionEditor modeless?

使用 PropertyGrid,如何使单击列表参数时打开的集合编辑器变为无模式而不是模式?

创建新类型的 CollectionEditor:

public class SmartCollectionEditor : CollectionEditor
{

重写 'EditValue' 表单以非模态而非模态打开集合表单,并删除接受和取消按钮,因为更改将立即生效。

public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value)
{
        CollectionForm collectionForm = base.CreateCollectionForm();
    collectionForm.EditValue = value;
    (collectionForm.AcceptButton as Button).Visible = false;
    (collectionForm.CancelButton as Button).Visible = false;
    collectionForm.Show();
    return value;
}

用可以使 PropertyGrid 打开它的属性标记您要使用的类型。

TypeDescriptor.AddAttributes(typeof(List<MyType>), new EditorAttribute(typeof(SmartCollectionEditor), typeof(UITypeEditor)));