c# 在PropertyGrid上显示类的属性

本文介绍如何在PropertyGrid控件中显示类类型的属性。通过使用[TypeConverter(typeof(ExpandableObjectConverter))],可以在PropertyGrid中展开并编辑复杂的类属性。文章提供了具体的代码示例,包括如何创建和使用类类型的属性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

当我们使用PropertyGrid控件时,平时用的都是常见的类型如:int ,string,bool通过如下代码可以将这个类的属性显示在Propertygrid

   public partial class Form1 : Form
    	{
    		public Form1()
    		{
    			InitializeComponent();
    			Student stu = new Student();
    			proGrid.SelectedObject = stu;
    		}
    	}
    
    	public class Student
    	{
    		private string name = "Tom";
    		public string Name
    		{
    			get
    			{
    				return name;
    			}
    			set
    			{
    				name = value;
    			}
    		}
    
    		private int stuID = 05;
    		public int StuID
    		{
    			get
    			{
    				return stuID;
    			}
    			set
    			{
    				stuID = value;
    			}
    		}
    		private bool isBoy = true;
    		public bool IsBoy
    		{
    			get
    			{
    				return isBoy;
    			}
    			set
    			{
    				isBoy = value;
    			}
    		}
    	}

效果如下图
在这里插入图片描述

问题来了:如果我们在Student类中定义一个类类型的属性呢?

解决方法: 在我们的类类型的属性上方添加[TypeConverter(typeof(ExpandableObjectConverter))]
先创建一个Lily

public class Lily
	{
		private int stuID = 04;
		public int StuID
		{
			get
			{
				return stuID;
			}
			set
			{
				stuID = value;
			}
		}
		private string name = "Lily";
		public string Name
		{
			get
			{
				return name;
			}
			set
			{
				name = value;
			}
		}
		public override string ToString()
		{
			return "...";
		}
	}

接下来是类类型的代码“

public class Student
	{
	    //名字
		private string name = "Tom";
		public string Name
		{
			get
			{
				return name;
			}
			set
			{
				name = value;
			}
		}
       //ID
		private int stuID = 05;
		public int StuID
		{
			get
			{
				return stuID;
			}
			set
			{
				stuID = value;
			}
		}
		//是否是男孩
		private bool isBoy = true;
		public bool IsBoy
		{
			get
			{
				return isBoy;
			}
			set
			{
				isBoy = value;
			}
		}
		//Lily类型
		Lily myLily = new Lily();
		[TypeConverter(typeof(ExpandableObjectConverter))] 
		[EditorBrowsable(EditorBrowsableState.Always)]
		public Lily MyLily
		{
			get
			{
				return myLily;
			}
			set
			{
				myLily = value;
			}
		}
	}

效果图如下:
在这里插入图片描述

本文参考自 https://www.codeproject.com/Articles/271589/Show-Properties-of-a-Class-on-a-PropertyGrid

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值