2010-09-16 5 views
0

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

ответ

0

Внесите INotifyCollectionChanged или используйте ObservableCollection класс. см. link

+0

вы можете дать мне хороший пример, пожалуйста, ? – guy

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

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

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

+0

Вау, спасибо soo mutch! – Henrique

Смежные вопросы