обновить коллекцию в таблице свойств - PullRequest
0 голосов
/ 16 сентября 2010

сено все.Я использую свойство сетки, чтобы добавить или удалить объект в коллекцию.но когда коллекционный редактор закрывается только после обновления сетки.после добавления другого объекта сетка не получит обновления.Коллекция в списке.Я видел много людей с той же проблемой, но без решений.спасибо

Ответы [ 2 ]

1 голос
/ 06 ноября 2015

Я понимаю, что очень опаздываю на вечеринку, но здесь все идет. Я использую этот базовый класс

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;
    }
}

Тогда вы просто создаете новый Редактор Коллекции на основе этого. Он автоматически обновит сетку свойств при закрытии формы коллекции.

Имейте в виду, что это решение отражается во внутренних элементах сетки свойств и может быть нарушено в любое время, но я сделал это некоторое время без проблем

0 голосов
/ 16 сентября 2010

Реализация интерфейса INotifyCollectionChanged или использование класса ObservableCollection. см ссылку

...