This is a migrated thread and some comments may be shown as answers.

How to add sub class to property grid

2 Answers 395 Views
PropertyGrid
This is a migrated thread and some comments may be shown as answers.
Myoungsu
Top achievements
Rank 1
Myoungsu asked on 03 Nov 2015, 07:05 AM

I have two classes

One is EQConfig, the other is HSMSConfig (I attached) and EQConfig has a property which name is hsmsConfig and HSMSConfig type.

Then, I set below

this.radPropertyGrid1.SelectedObject = EQConfig;

Then I expected I can expand hsmsConfig property like

2 Answers, 1 is accepted

Sort by
0
Myoungsu
Top achievements
Rank 1
answered on 03 Nov 2015, 07:10 AM
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ComponentModel;
using System.IO;
using System.Xml.Serialization;
 
namespace SCKIT.EQConfiguration
{
    [Serializable, DefaultPropertyAttribute("DeviceID")]
    public class HSMSConfig
    {
        [Category("Default Setting"), Description("Equipment ID")]
        public string ID { get; set; }
 
        [Category("Default Setting"), Description("Active or Passive")]
        public ENUM_CONNECTION_MODE MODE { get; set; }
 
        [Category("Default Setting")]
        public string IP { get; set; }
 
        [Category("Default Setting"), Description("Please enter an integer between 0 and 65535.")]
        public int PORT { get; set; }
 
        [Category("Default Setting"), Description("Device ID")]
        public int DeviceID { get; set; }
 
        [Category("Timeout"), Description("Represents the time3(1~120) of hsms.")]
        public int T3 { get; set; }
 
        [Category("Timeout"), Description("Represents the time5(1~240) of hsms.")]
        public int T5 { get; set; }
 
        [Category("Timeout"), Description("Represents the time6(1~240) of hsms.")]
        public int T6 { get; set; }
 
        [Category("Timeout"), Description("Represents the time7(1~240) of hsms.")]
        public int T7 { get; set; }
 
        [Category("Timeout"), Description("Represents the time8(1~120) of hsms.")]
        public int T8 { get; set; }
 
        [Category("Timeout"), Description("Represents the LinkTestTime(1~120) of hsms.")]
        public int LinkTestTimeout { get; set; }
 
        [BrowsableAttribute(false)]
        public string LogFolderPath { get; set; }
 
 
        [Category("Log"), Description("SystemLog Enable/Disable")]
        public bool SystemLogWrite { get; set; }
 
        [Category("Log"), Description("SystemLog Maximum Count")]
        public int SystemLogCount { get; set; }
 
        [Category("Log"), Description("SystemLog Maximum Capacity")]
        public int SystemLogMaxCapacity { get; set; }
 
 
        [Category("Log"), Description("SMLLog Enable/Disable")]
        public bool SMLLogWrite { get; set; }
 
        [Category("Log"), Description("SMLLog Maximum Count")]
        public int SMLLogCount { get; set; }
 
        [Category("Log"), Description("SMLLog Maximum Capacity")]
        public int SMLMaxCapacity { get; set; }
 
 
        [Category("Log"), Description("HexaLog Enable/Disable")]
        public bool HEXLogWrite { get; set; }
 
        [Category("Log"), Description("HexaLog Maximum Count")]
        public int HEXLogCount { get; set; }
 
        [Category("Log"), Description("HexaLog Maximum Capacity")]
        public int HEXLogMaxCapacity { get; set; }
 
 
        public HSMSConfig()
        {
            initialize();
        }
        public HSMSConfig(string id)
        {
            initialize();
        }
 
        private void initialize()
        {
            MODE = ENUM_CONNECTION_MODE.ACTIVE;
            IP = string.Empty;
            PORT = 5000;
            DeviceID = 0;
            T3 = 45;
            T5 = 10;
            T6 = 5;
            T7 = 10;
            T8 = 5;
            LinkTestTimeout = 10;
            LogFolderPath = string.Empty;
 
            SystemLogWrite = false;
            SystemLogCount = 10;
            SystemLogMaxCapacity = 10;
 
            SMLLogWrite = false;
            SMLLogCount = 10;
            SMLMaxCapacity = 10;
 
            HEXLogWrite = false;
            HEXLogCount = 10;
            HEXLogMaxCapacity = 10;
        }
 
        public string GetXmlString()
        {
            try
            {
                // Create a new XmlSerializer instance with the type of the test class
                XmlSerializer SerializerObj = new XmlSerializer(typeof(HSMSConfig));
 
                // Create a new file stream to write the serialized object to a file
                StringWriter sw = new StringWriter();
                SerializerObj.Serialize(sw, this);
 
                return sw.ToString();
            }
            catch (Exception ex)
            {
                return null;
            }
            finally
            {
            }
        }
    }
}
using
System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ComponentModel;
using System.IO;
using System.Xml.Serialization;
 
namespace SCKIT.EQConfiguration
{
    [Serializable, DefaultPropertyAttribute("DeviceID")]
    public class HSMSConfig
    {
        [Category("Default Setting"), Description("Equipment ID")]
        public string ID { get; set; }
 
        [Category("Default Setting"), Description("Active or Passive")]
        public ENUM_CONNECTION_MODE MODE { get; set; }
 
        [Category("Default Setting")]
        public string IP { get; set; }
 
        [Category("Default Setting"), Description("Please enter an integer between 0 and 65535.")]
        public int PORT { get; set; }
 
        [Category("Default Setting"), Description("Device ID")]
        public int DeviceID { get; set; }
 
        [Category("Timeout"), Description("Represents the time3(1~120) of hsms.")]
        public int T3 { get; set; }
 
        [Category("Timeout"), Description("Represents the time5(1~240) of hsms.")]
        public int T5 { get; set; }
 
        [Category("Timeout"), Description("Represents the time6(1~240) of hsms.")]
        public int T6 { get; set; }
 
        [Category("Timeout"), Description("Represents the time7(1~240) of hsms.")]
        public int T7 { get; set; }
 
        [Category("Timeout"), Description("Represents the time8(1~120) of hsms.")]
        public int T8 { get; set; }
 
        [Category("Timeout"), Description("Represents the LinkTestTime(1~120) of hsms.")]
        public int LinkTestTimeout { get; set; }
 
        [BrowsableAttribute(false)]
        public string LogFolderPath { get; set; }
 
 
        [Category("Log"), Description("SystemLog Enable/Disable")]
        public bool SystemLogWrite { get; set; }
 
        [Category("Log"), Description("SystemLog Maximum Count")]
        public int SystemLogCount { get; set; }
 
        [Category("Log"), Description("SystemLog Maximum Capacity")]
        public int SystemLogMaxCapacity { get; set; }
 
 
        [Category("Log"), Description("SMLLog Enable/Disable")]
        public bool SMLLogWrite { get; set; }
 
        [Category("Log"), Description("SMLLog Maximum Count")]
        public int SMLLogCount { get; set; }
 
        [Category("Log"), Description("SMLLog Maximum Capacity")]
        public int SMLMaxCapacity { get; set; }
 
 
        [Category("Log"), Description("HexaLog Enable/Disable")]
        public bool HEXLogWrite { get; set; }
 
        [Category("Log"), Description("HexaLog Maximum Count")]
        public int HEXLogCount { get; set; }
 
        [Category("Log"), Description("HexaLog Maximum Capacity")]
        public int HEXLogMaxCapacity { get; set; }
 
 
        public HSMSConfig()
        {
            initialize();
        }
        public HSMSConfig(string id)
        {
            initialize();
        }
 
        private void initialize()
        {
            MODE = ENUM_CONNECTION_MODE.ACTIVE;
            IP = string.Empty;
            PORT = 5000;
            DeviceID = 0;
            T3 = 45;
            T5 = 10;
            T6 = 5;
            T7 = 10;
            T8 = 5;
            LinkTestTimeout = 10;
            LogFolderPath = string.Empty;
 
            SystemLogWrite = false;
            SystemLogCount = 10;
            SystemLogMaxCapacity = 10;
 
            SMLLogWrite = false;
            SMLLogCount = 10;
            SMLMaxCapacity = 10;
 
            HEXLogWrite = false;
            HEXLogCount = 10;
            HEXLogMaxCapacity = 10;
        }
 
        public string GetXmlString()
        {
            try
            {
                // Create a new XmlSerializer instance with the type of the test class
                XmlSerializer SerializerObj = new XmlSerializer(typeof(HSMSConfig));
 
                // Create a new file stream to write the serialized object to a file
                StringWriter sw = new StringWriter();
                SerializerObj.Serialize(sw, this);
 
                return sw.ToString();
            }
            catch (Exception ex)
            {
                return null;
            }
            finally
            {
            }
        }
    }
}
Sorry I didn't attached files
0
Dess | Tech Support Engineer, Principal
Telerik team
answered on 03 Nov 2015, 09:47 AM
Hello Myoungsu,

Thank you for writing.

In order to achieve your goal, it is suitable to use an ExpandableObjectConverter. Additional information is available in PropertyGrid >> Type Converters help article.

I hope this information helps. Should you have further questions I would be glad to help.
 
Regards,
Dess
Telerik
Do you want to have your say when we set our development plans? Do you want to know when a feature you care about is added or when a bug fixed? Explore the Telerik Feedback Portal and vote to affect the priority of the items
Tags
PropertyGrid
Asked by
Myoungsu
Top achievements
Rank 1
Answers by
Myoungsu
Top achievements
Rank 1
Dess | Tech Support Engineer, Principal
Telerik team
Share this question
or