0

我有一个动态加载的类,我事先不知道它包含多少(或什么类型)属性。我想以显示常规类的方式将其所有属性加载到 PropertyGrid 中。

例如,如果这是我的课:

class TestPropertyObject
{
    [Category("Names")]
    [Description("Enter your name")]
    public string Name { get; set; }

    [Category("Numbers")]
    [Description("Enter your number")]
    public int Number { get; set; }
}

我使用反射来生成一个对象并获取它的属性:

PropertyInfo[] info = obj.GetType().GetProperties()  

如何在 PropertyGrid 中显示属性?
我已经多次准备好这篇文章 http://www.codeproject.com/Articles/4448/Customized-display-of-collection-data-in-a-Propert 但我似乎无法让它工作。

一些指导将不胜感激。

谢谢!

4

1 回答 1

1

这是一个解决方案,您只需要该类的实例。

        var OptionsPropertyGrid = new PropertyGrid();
        OptionsPropertyGrid.Size = new Size(300, 250);

        this.Controls.Add(OptionsPropertyGrid);

        TestPropertyObject appset = new TestPropertyObject();
        OptionsPropertyGrid.SelectedObject = appset;

此示例假设您的类的属性使用类别/描述进行修饰。如果我误解了,请告诉我。

或者通过使用动态对象

        var OptionsPropertyGrid = new PropertyGrid();
        OptionsPropertyGrid.Size = new Size(300, 250);

        this.Controls.Add(OptionsPropertyGrid);
        this.Text = "Options Dialog";
        string classname = "WindowsFormsApplication1.TestPropertyObject";
        var type1 = Type.GetType(classname);
        object obj = Activator.CreateInstance(type1);
        OptionsPropertyGrid.SelectedObject = obj;

确保您可以获得该类的名称空间。

于 2012-12-26T12:31:26.403 回答