使用PropertyGrid,如何在单击列表参数时使打开的集合编辑器变为无模式而不是模态?
答案 0 :(得分: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)));