如何在 PropertyGrid 中查看对象属性?

发布于 2024-11-02 18:36:56 字数 1037 浏览 5 评论 0原文

目前我有一个 A 类型的对象,PropertyGrid 正在查看它。然而,它的属性之一是 B 类型。B 类型的属性是不可扩展的。我怎样才能改变这个,以便:

a)我可以扩展自定义对象属性 b)这些更改绑定到该属性

这是我到目前为止的代码:

using System;
using System.Windows.Forms;
using System.ComponentModel;

namespace PropGridTest
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            A a = new A
            {
                Foo = "WOO HOO!",
                Bar = 10,
                BooFar = new B
                {
                    FooBar = "HOO WOO!",
                    BarFoo = 100
                }
            };

            propertyGrid1.SelectedObject = a;
        }
    }
    public class A
    {
        public string Foo { get; set; }
        public int Bar { get; set; }
        public B BooFar { get; set; }
    }
    public class B
    {
        public string FooBar { get; set; }
        public int BarFoo { get; set; }
    }
}

At the moment I have an object of type A which is being viewed by the PropertyGrid. However, one of its properties is of type B. The property which is of type B is not expandable. How can I change this so that:

a) I can expand custom object property's
b) Those changes are bound to that property

Here is the code I have so far:

using System;
using System.Windows.Forms;
using System.ComponentModel;

namespace PropGridTest
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            A a = new A
            {
                Foo = "WOO HOO!",
                Bar = 10,
                BooFar = new B
                {
                    FooBar = "HOO WOO!",
                    BarFoo = 100
                }
            };

            propertyGrid1.SelectedObject = a;
        }
    }
    public class A
    {
        public string Foo { get; set; }
        public int Bar { get; set; }
        public B BooFar { get; set; }
    }
    public class B
    {
        public string FooBar { get; set; }
        public int BarFoo { get; set; }
    }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

长亭外,古道边 2024-11-09 18:36:56

您可以使用 ExpandableObjectConverter 为此目的而设计的类。

此类添加了对属性的支持
对象上的方法和
由 TypeConverter 提供的属性。
使某种类型的属性可扩展
在 PropertyGrid 中指定此项
标准类型转换器
的实施
获取支持的属性和
获取属性。

要使用此转换器,请使用 修饰相关属性TypeConverterAttribute,以 typeof(ExpandableObjectConverter) 作为构造函数参数。

public class A
{
    public string Foo { get; set; }
    public int Bar { get; set; }

    [TypeConverter(typeof(ExpandableObjectConverter))]
    public B BooFar { get; set; }
}

You can use the ExpandableObjectConverter class for this purpose.

This class adds support for properties
on an object to the methods and
properties provided by TypeConverter.
To make a type of property expandable
in the PropertyGrid, specify this
TypeConverter for standard
implementations of
GetPropertiesSupported and
GetProperties.

To use this converter, decorate the property in question with the TypeConverterAttribute, with typeof(ExpandableObjectConverter) as the constructor-argument.

public class A
{
    public string Foo { get; set; }
    public int Bar { get; set; }

    [TypeConverter(typeof(ExpandableObjectConverter))]
    public B BooFar { get; set; }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文