【问题标题】:How can I get a reference to the object changed in a PropertyValueChanged event?如何获取对 PropertyValueChanged 事件中更改的对象的引用?
【发布时间】:2020-11-30 18:49:09
【问题描述】:

我可以在我的PropertyGrid 上添加PropertyValueChanged 事件的处理程序。如果用户更改了SelectedObject 的属性,这可以正常工作。但是,如果SelectedObject 具有本身是对象的属性,则用户也可以编辑该对象的属性。我仍然会收到 PropertyValueChanged 引发的事件,这很好,但我找不到获取对他们已更改的对象的引用的方法。

在 Watch 窗口中查看 PropertyValueChangedEventArgs 参数的 ChangedItem 属性,我可以看到 PropertyDescriptorGridEntry 中有一个 Instance 属性,但我似乎无法从我的代码中访问它。

任何建议表示赞赏。

【问题讨论】:

    标签: .net propertygrid


    【解决方案1】:

    当引发PropertyValueChanged 事件时,它具有关联的PropertyValueChangedEventArgs。此对象有一个 ChangedItem 成员,其中包含已更改的 GridItem。因此,如果您想对已更改的项目做某事,您的处理程序可能如下所示:

    private void OnPropertyValueChanged(Object sender, PropertyValueChangedEventArgs args) {
        Console.WriteLine($"The changed item was {args.ChangedItem}");
    }
    

    【讨论】:

    • 我知道,但 ChangedItem 没有提供对已更改对象的引用。
    【解决方案2】:

    这似乎可以完成工作:

    e.ChangedItem.GetType().GetProperty("Instance").GetValue(e.ChangedItem)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-04-07
      • 1970-01-01
      • 2017-10-07
      • 1970-01-01
      • 1970-01-01
      • 2015-03-23
      • 1970-01-01
      相关资源
      最近更新 更多