Wie auf Anzeige-Objekt, mit sub-class im "PropertyGrid" - Steuerelement

Werde ich PropertyGrid-Steuerelement, um zu zeigen, meine Objekte. Hier ist die info-Klasse. Die Info-Klasse hat einige Eigenschaften, die aus der Klasse geben. Allerdings ist die sub-Klasse nicht in die Eigenschaften. Haben Sie eine Idee?

Code-snippet:

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

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

            info _in = new info();
            this.propertyGrid1.SelectedObject = _in;
        }
    }

    [DefaultPropertyAttribute("Name")]
    [TypeConverter(typeof(ExpandableObjectConverter))]
    public class info
    {
        private int _id;
        [CategoryAttribute("Defaults")]
        public int Id
        {
            get { return _id; }
            set { _id = value; }
        }

        private string _name;
        [CategoryAttribute("Defaults")]
        public string Name
        {
            get { return _name; }
            set { _name = value; }
        }

        private DoublePoint _resultMarkPos;
        [CategoryAttribute("Results")]
        [TypeConverter(typeof(ExpandableObjectConverter))]
        public DoublePoint ResultMarkPos
        {
            get { return _resultMarkPos; }
            set { _resultMarkPos = value; }
        }

        public struct DoublePoint
        {
            public double x, y;
        }

        private subInfo1 _sub1;
        [CategoryAttribute("SubInfo")]
        [TypeConverter(typeof(ExpandableObjectConverter))]
        public subInfo1 SubInfo1
        {
            get { return _sub1; }
            set { _sub1 = value; }
        }

        private subInfo2 _sub2;
        [CategoryAttribute("SubInfo2")]
        [TypeConverter(typeof(ExpandableObjectConverter))]
        public subInfo2 SubInfo2
        {
            get { return _sub2; }
            set { _sub2 = value; }
        }

        public info()
        {
            this._id = 0;
            this._name = "info";

            this._resultMarkPos.x = 0;
            this._resultMarkPos.y = 0;

            this._sub1 = new subInfo1
            {
                Id = 11,
                Name = "sub11",
            };

            this._sub2 = new subInfo2
            {
                Id = 22,
                Name = "sub22",
            };
        }
    }

    public class subInfo1
    {
        private int _id;
        public int Id
        {
            get { return _id; }
            set { _id = value; }
        }

        private string _name;
        public string Name
        {
            get { return _name; }
            set { _name = value; }
        }

        public subInfo1()
        {
            this._id = 0;
            this._name = "sub1";
        }
    }

    public class subInfo2
    {
        private int _id;
        public int Id 
        {
            get { return _id; }
            set { _id = value; }
        }

        private string _name;
        public string Name
        {
            get { return _name; }
            set { _name = value; }
        }

        public subInfo2()
        {
            this._id = 0;
            this._name = "sub2";
        }
    }
}

Bearbeitet
Allerdings struct Fall nicht-Effekt für [TypeConverter(typeof(ExpandableObjectConverter))] - Attribut. Haben Sie eine Idee ?

private DoublePoint _resultMarkPos;
[CategoryAttribute("Results")]
[TypeConverter(typeof(ExpandableObjectConverter))]
public DoublePoint ResultMarkPos
{
            get { return _resultMarkPos; }
            set { _resultMarkPos = value; }
}

public struct DoublePoint
{
        public double x, y;
}

InformationsquelleAutor Changju.rhee | 2013-08-31

Schreibe einen Kommentar