Winforms winform PropertyGrid是否能够编辑动态对象?

Winforms winform PropertyGrid是否能够编辑动态对象?,winforms,propertygrid,dynamicobject,Winforms,Propertygrid,Dynamicobject,我们知道,默认情况下winform PropertyGrid能够编辑预定义类的属性。但是,有时我们可能需要编辑动态创建的对象。请参阅以下代码: ParamForm.Show(new { Firstname = "John", Lastname = "Herby" }) ParamForm窗口包含2个控件、一个PropertyGrid和一个按钮。它设计为能够编辑仅包含字符串或布尔字段的动态对象 public static dynamic Show(dynamic args) { var

我们知道,默认情况下winform PropertyGrid能够编辑预定义类的属性。但是,有时我们可能需要编辑动态创建的对象。请参阅以下代码:

ParamForm.Show(new { Firstname = "John", Lastname = "Herby" })
ParamForm窗口包含2个控件、一个PropertyGrid和一个按钮。它设计为能够编辑仅包含字符串或布尔字段的动态对象

public static dynamic Show(dynamic args)
{
    var frm = new ParamForm(args);
    frm.ShowDialog();
    return frm.Result;
}
public ParamForm(dynamic args)
{
    InitializeComponent();
    propertyGrid.SelectedObject = ag;
}

问题是PropertyGrid控件中显示的Firstname和Lastname显示为灰色,无法编辑。那么,如何使PropertyGrid能够编辑动态创建的对象呢?

匿名类型按设计具有只读属性描述符(由属性网格使用)(有关此项的详细信息,请参见此处:)

但是,您可以使用这里演示的
dynamicTypeDescriptorRapper
类之类的技巧来实现