I get a solution in this situation. There is a need to get the CollectionEditor class and create a custom editor as follows:
public class MeasuredParamEditor : CollectionEditor { public static EventHandler CollectionChanged; public MeasuredParamEditor(Type type) : base(type) { } protected override string GetDisplayText(object value) { if (value is MeasuredParam) { MeasuredParam param = (MeasuredParam)value; return string.Format("{0}: {1}", param.Name, param.Value); } else return base.GetDisplayText(value); } protected override CollectionForm CreateCollectionForm() { CollectionForm collectionForm = base.CreateCollectionForm(); Form frm = collectionForm as Form; if (frm != null) {
In the main form, I subscribe to the static event of my custom editor.
private void MainForm_Load(object sender, EventArgs e) { MeasuredParamEditor.CollectionChanged += new EventHandler(OnMeasuredParamsChanged); } private void MainForm_FormClosing(object sender, FormClosingEventArgs e) { MeasuredParamEditor.CollectionChanged -= new EventHandler(OnMeasuredParamsChanged); } void OnMeasuredParamsChanged(object sender, EventArgs e) { this.myPropGrid.Refresh(); }
best regards, Artem
source share