标签:
使用过 Microsoft Visual Basic 或 Microsoft Visual Studio .NET的朋友,一定使用过属性浏览器来浏览、查看或编辑一个或多个对象的属性。.NET 框架 PropertyGrid 控件是 Visual Studio .NET 属性浏览器的核心。PropertyGrid 控件显示对象或类型的属性,并主要通过使用反射(在运行时提供类型信息的技术)来检索项目的属性。PropertyGrid控件包含以下部分:一般属性、可展开属性、属性类别、属性说明和属性编辑器等。
下面,我在我上一篇博客《Winform中DockPanel(引用WeifenLuo.WinFormsUI.Docking.dll组件)的使用》的基础上以代码的形式介绍PropertyGrid控件的使用。
首先,定义一个PropertyGrid控件,并将其添加到DockPanelRight窗体
//为DockPanelLeft窗体添加PropertyGrid控件 propertyGrid = new PropertyGrid(); dockPanelSideRight.Controls.Add(propertyGrid); InitPropertyGrid(); private void InitPropertyGrid() { propertyGrid.Location = new Point(0, 0); //propertyGrid.Anchor = AnchorStyles.Left; propertyGrid.Dock = DockStyle.Fill; }
其次,添加一个属性类UserProperty,并自定义属性,属性类UserProperty代码如下:
class UserProperty { private string _AppName; private string _AppPath; private Point _Location;// = new Point(0, 0); private Size _Size = new Size(0, 0); private Color _BackColor; private Color _ForeColor; private Font _Font; private String _Text; [CategoryAttribute("常规"), DescriptionAttribute("应用程序名称"), ReadOnlyAttribute(true)] public string AppName { get { return _AppName; } set { _AppName = value; } } [CategoryAttribute("常规"), DescriptionAttribute("应用程序路径"), ReadOnlyAttribute(true)] public string AppPath { get { return _AppPath; } set { _AppPath = value; } } [CategoryAttribute("布局"), DescriptionAttribute("位置"), ReadOnlyAttribute(false)] public Point Location { get { return _Location; } set { _Location = value; } } [CategoryAttribute("布局"), DescriptionAttribute("尺寸"), ReadOnlyAttribute(false)] public Size Size { get { return _Size; } set { _Size = value; } } [CategoryAttribute("外观"), DescriptionAttribute("背景色"), ReadOnlyAttribute(false)] public Color BackColor { get { return _BackColor; } set { _BackColor = value; } } [CategoryAttribute("外观"), DescriptionAttribute("前景色"), ReadOnlyAttribute(false)] public Color ForeColor { get { return _ForeColor; } set { _ForeColor = value; } } [CategoryAttribute("外观"), DescriptionAttribute("文本")] public String Text { get { return _Text; } set { _Text = value; } } [CategoryAttribute("外观"), DescriptionAttribute("字体")] public Font Font { get { return _Font; } set { _Font = value; } } }
最后,实例化UserProperty类,并将其设定为propertyGrid的SelectedObject属性
//设置PropertyGrid控件的值,自定义属性 propertyUser = new UserProperty(); propertyGrid.SelectedObject = propertyUser; InitPropertyUser(); private void InitPropertyUser() { propertyUser.AppName = this.Text; propertyUser.Size = this.ClientSize; propertyUser.Location = this.Location; }
运行效果如下所示:
要更改某些属性的显示方式,可以对这些属性应用不同的特性。特性是用于为类型、字段、方法和属性等编程元素添加批注的声明标记,在运行时可以使用反射对其进行检索。如下所示:
标签:
原文地址:http://www.cnblogs.com/gaohongchen01/p/4801715.html