刷新propertygrid中的集合

时间:2010-09-16 13:25:30

标签: c# propertygrid

干得好。 我正在使用属性网格添加或删除对象的集合。 但是当收集器只在网格刷新时关闭。 添加另一个对象后,网格不会刷新。 列表中的集合。 我见过很多人有同样的问题,但没有解决方案。 坦斯克

2 个答案:

答案 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