加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 06:35:24 所属栏目:百科 来源:网络整理
导读:目前,我有一个由PropertyGrid查看的A型对象.然而,其属性之一是B型.属性类型B不可扩展.我如何改变这样做: a)我可以扩展自定义对象属性 b)这些变化必然与该财产有关 以下是我到目前为止的代码: using System;using System.Windows.Forms;using System.Compon
目前,我有一个由PropertyGrid查看的A型对象.然而,其属性之一是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; }
    }
}

解决方法

为此可以使用 ExpandableObjectConverter类.

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.

要使用此转换器,请使用TypeConverterAttribute装载有问题的属性,使用typeof(ExpandableObjectConverter)作为构造函数.

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读