答案 0 :(得分:1)
我意识到我参加派对的时间已经很晚了,但就在这里。我使用这个基类
public class CollectionEditorBase : CollectionEditor
{
protected PropertyGrid ownerGrid;
public CollectionEditorBase(Type type) : base(type) { }
public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value)
{
PropertyInfo ownerGridProperty = provider.GetType().GetProperty("OwnerGrid", BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public);
ownerGrid = (PropertyGrid)ownerGridProperty.GetValue(provider);
return base.EditValue(context, provider, value);
}
protected override CollectionForm CreateCollectionForm()
{
CollectionForm cf = base.CreateCollectionForm();
cf.FormClosing += delegate(object sender, FormClosingEventArgs e)
{
ownerGrid.Refresh();
};
return cf;
}
}
然后你只需要创建一个新的Collectioneditor。收集表单关闭时,它将自动刷新属性网格。
请注意,这个解决方案反映在属性网格的内部,可以随时打破,但我已经做了一段时间了,没有问题
答案 1 :(得分:0)
实施INotifyCollectionChanged
界面或使用ObservableCollection
课程。
请参阅link