c# – winforms PropertyGrid中的类别层次结构
发布时间:2020-12-16 01:51:19 所属栏目:百科 来源:网络整理
导读:我有一些属性可以分为类别和子类别.当我将它们添加到PropertyGrid时,所有子类别都在根目录中,但我希望子类别是类别的子类. class Settings { [Category("SubCategory1")] public bool Property1 { get; set; } [Category("SubCategory1")] public bool Prope
我有一些属性可以分为类别和子类别.当我将它们添加到PropertyGrid时,所有子类别都在根目录中,但我希望子类别是类别的子类.
class Settings { [Category("SubCategory1")] public bool Property1 { get; set; } [Category("SubCategory1")] public bool Property2 { get; set; } [Category("SubCategory2")] public bool Property3 { get; set; } } PropertyGrid grid = new PropertyGrid(); grid.SelectedObject = new Settings(); 我想让它看起来像 -Category1 -SubCategory1 Property1 Property2 -SubCategory2 Property3 解决方法
我找到了解决方案.方法是使用TypeConverter属性和嵌套类.
var settings = new Settings(); settings.Subcategory1 = new SubCategory1(){Property1 = "P1",Property2 = "P2"}; settings.Subcategory2 = new SubCategory2(){Property3="P3"}; grid.SelectedObject = settings; … public class Settings { [Category("Category1")] public SubCategory1 Subcategory1 { get; set; } [Category("Category1")] public SubCategory2 Subcategory2 { get; set; } } [TypeConverter(typeof (ExpandableObjectConverter))] public class SubCategory1 { public String Property1 { get; set; } public String Property2 { get; set; } public override string ToString() { return String.Empty; } } [TypeConverter(typeof(ExpandableObjectConverter))] public class SubCategory2 { public String Property3 { get; set; } public override string ToString() { return String.Empty; } } 希望它会帮助某人. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |