读书人

PropertyGrid 触发 PropertyValueChan

发布时间: 2014-01-15 15:40:23 作者: rapoo

PropertyGrid 触发 PropertyValueChanged 的问题
在使用 PropertyValueChanged 的时候,我自定义的 UITypeEditor 弹出控件无法触发这个事件,其他的 string bool 等都是可以的。

        public override UITypeEditorEditStyle GetEditStyle(System.ComponentModel.ITypeDescriptorContext context)
{
// 编辑属性值时,在右侧显示...更多按钮
return UITypeEditorEditStyle.Modal;
}

public override object EditValue(System.ComponentModel.ITypeDescriptorContext context, System.IServiceProvider provider, object value)
{
var edSvc = provider.GetService(typeof(IWindowsFormsEditorService)) as IWindowsFormsEditorService;
if (edSvc != null)
{
QueryParam box = new QueryParam((List<ParameterList>)value);
edSvc.ShowDialog(box);
value = box.Parameter;
}
return base.EditValue(context, provider, value);
}


请问怎么才可以让一些 UITypeEditor 触发到事件,执行的弹出后类值是改变的.
[解决办法]
如果是引用类型,要改变引用,比如:

//
List<ParameterList> list = value;
list.Add(...);
value = list; // 引用没有改变,不会触发
return value;
//
List<ParameterList> list = value;
list.Add(...);
value = new List<ParameterList>(list) // 改变引用
return value;

读书人网 >C#

热点推荐