0

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

4

1 回答 1

0

创建一个新类型的 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)));
于 2015-10-06T21:41:01.350 回答