сено все. Я использую сетку свойств для добавления или удаления объекта в коллекцию. но когда редактор коллекции закрывается только после обновления сетки. после добавления другого объекта сетка не будет обновляться. коллекция в списке. Я видел много людей с той же проблемой, но без решения. спасибо
обновить коллекцию в propertygrid
Ответы (2)
Реализуйте интерфейс INotifyCollectionChanged
или используйте класс ObservableCollection
. см. ссылку
person
Srinivas Reddy Thatiparthy
schedule
16.09.2010
Можете ли вы привести мне хороший пример, пожалуйста?
- person guy; 16.09.2010
Я понимаю, что очень опаздываю на вечеринку, но вот оно. Я использую этот базовый класс
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 на основе этого. Он автоматически обновит сетку свойств, когда форма коллекции будет закрыта.
Имейте в виду, однако, что это решение отражается на внутренностях сетки свойств и может быть нарушено в любое время, но я сделал это некоторое время без проблем.
person
Steve Medley
schedule
05.11.2015