0

我正在使用 winforms 中的属性网格来显示我的自定义类型的属性 - 我使用自定义类型描述符(实现接口 ICustomTypeDescriptor)来执行此操作,以便显示我的对象的公共属性,每个属性都有自己的 PropertyDescriptor 实现。

该实现接近此处描述的代码:http: //www.codeproject.com/Articles/4448/Customized-display-of-collection-data-in-a-Propert

这有效,因为我可以看到所有属性,并且它们在属性网格中有自己的编辑器但是我有如何实现的问题

public override void ResetValue(object component)

在基础 PropertyDescriptor 上。

目前我已经像这样实现它:

public override void ResetValue(object component)
{
    if (!_isReadOnly && _dataDefault != null)
    {
        SetValue(component, _dataDefault.Value);
    }
}

然而,尽管数据确实得到了更新,属性网格显示只显示旧值,除非我刷新它 - 我无法弄清楚属性网格将如何更新或知道值已更改,是否存在某种事件刷新可以从 PropertyDescriptor 实现触发的单元格?

4

1 回答 1

0

我在这里发现了一个类似的问题:PropertyGrid doesn't notice properties changed in code?

我采用的解决方案是实现 INotifyPropertyChanged 通知事件并将其注册到属性网格以进行刷新。

于 2015-07-29T13:29:27.793 回答