使用过 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(, );
//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(, );
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;
}

  运行效果如下所示:

  

  要更改某些属性的显示方式,可以对这些属性应用不同的特性。特性是用于为类型、字段、方法和属性等编程元素添加批注的声明标记,在运行时可以使用反射对其进行检索。如下所示:

  • DescriptionAttribute      设置显示在属性下方说明帮助窗格中的属性文本。这是一种为活动属性(即具有焦点的属性)提供帮助文本的有效方法。
  • CategoryAttribute       设置属性在网格中所属的类别。当您需要将属性按类别名称分组时,此特性非常有用。如果没有为属性指定类别,该属性将被分配给杂项类别。
  • BrowsableAttribute       表示是否在网格中显示属性。此特性可用于在网格中隐藏属性。默认情况下,公共属性始终显示在网格中。
  • ReadOnlyAttribute        表示属性是否为只读。此特性可用于禁止在网格中编辑属性。默认情况下,带有 get 和 set 访问函数的公共属性在网格中是可以编辑的。
  • DefaultValueAttribute    表示属性的默认值。如果希望为属性提供默认值,然后确定该属性值是否与默认值相同,则可使用此特性。可以将此特性应用于所有属性。
  • DefaultPropertyAttribute 表示类的默认属性。在网格中选择某个类时,将首先突出显示该类的默认属性。

WinForm窗体PropertyGrid控件的使用的更多相关文章

  1. WinForm窗体及其控件的自适应

    3步骤: 1.在需要自适应的Form中实例化全局变量   AutoSizeFormClass.cs源码在下方 AutoSizeFormClass asc = new AutoSizeFormClass ...

  2. 转:C# WinForm窗体及其控件的自适应

    一.说明 2012-11-30 曾经写过 <C# WinForm窗体及其控件自适应各种屏幕分辨率>  ,其中也讲解了控件自适应的原理.近期有网友说,装在panel里面的控件,没有效果? 这 ...

  3. C# WinForm窗体及其控件自适应各种屏幕分辨率

    C# WinForm窗体及其控件自适应各种屏幕分辨率 一.说明  我们自己编写程序的界面,会遇到各种屏幕分辨率,只有自适应才能显的美观.实际上,做到这点也很简单,就是首先记录窗体和它上面控件的初始位置 ...

  4. 【Winfrom-适配窗体】 WinForm窗体及其控件的自适应,控件随着窗体变化

    在Winform中,窗体最大化之后,控件仍然保持原来的大小,就会显得不好看,那么有什么办法让控件跟着窗体变化吗? 在需要自适应的Form中代码如下:(AutoSizeFormClass.cs源码在下方 ...

  5. C# WinForm窗体及其控件的自适应

    3步骤: 1.在需要自适应的Form中实例化全局变量   AutoSizeFormClass.cs源码在下方 AutoSizeFormClass asc = new AutoSizeFormClass ...

  6. C#winform窗体用户控件自定义事件

    C#许多事情都和事件有关系,大部分的事情我们可以通过C#自己的事件来完成,但如果我们自己新建了一个自定义控件,我们该如何定义自己想要的事件呢?下面我就来为大家粗略的讲解一番. 假设我们自定义了一个控件 ...

  7. C# Winform窗体和控件自适应大小

    1.在项目中创建类AutoSizeForm AutoSizeForm.cs文件代码: using System; using System.Collections.Generic; using Sys ...

  8. PropertyGrid控件由浅入深(一):文章大纲

    Winform中PropertyGrid控件是一个非常好用的对象属性编辑工具,对于Key-Value形式的数据的处理也是非常的好用. 因为Property控件设计良好,在很小的空间内可以展示很多的内容 ...

  9. Winform 获取当前单击的控件名称 和 向窗体添加控件

    Winform如何获取当前单击的控件名称,比如有100个Button 和一个button_Click()的按钮事件 ,分别点击不同按钮后显示所点击的按钮名称?private void button_C ...

随机推荐

  1. Unity3D外包团队——技术分享U3D全景漫游(三)

    22.给每个物体都附上贴图,如果是纯色物体,也付给纯色贴图 23.打光后,选择要烘培的物体 设置输出路径 添加烘培输出的贴图类型 添加“LightingMap”类型 设置烘培贴图大小和目标贴图位置为“ ...

  2. 一加3,CM13蓝牙共享互联网 无效。

    一加3准备把4G网络共享给魅族PRO5. 但在一加3的蓝牙设置里怎么勾选都无用. 最后发现在要在PRO5上设置才行. 1.在蓝牙列表中,点击带圈的感叹号. 2.选择“互联网访问”. - --

  3. ie8及ie8以下支持html5 video标签

    html5media是一个很给力的JavaScript类库,它不依赖于任何JavaScript框架.使用了html5media之后,当浏览器不支持HTML5时,它将会自动切换成Flash模式的Flow ...

  4. delphi中Message消息的使用方法

    实例1 unit Unit1; interface   uses  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls ...

  5. [DFNews] What's coming in EnCase 7.08?

    论版本变化速度,AD绝对首屈一指,从FTK 4到现在的FTK 5也不过两年多时间,EnCase近期(初步预计8月初)将推出V7的新版本7.08,下面是一些新功能: Evidence Processor ...

  6. Unity3D 双摇杆 c# JoyStick 实现自己的双摇杆

    转载请声明: http://www.cnblogs.com/ADaii/p/3859520.html Untiy3D 官方摇杆脚本只能完成一个摇杆,要实现双摇杆比较费劲 现在我吧我废了一通宵的结果共享 ...

  7. jQuery MiniUI 开发指南+API组件参考手册

    jQuery MiniUI 开发指南 本文档将逐步的讲解jQuery MiniUI的方方面面,从此您将踏上jQuery MiniUI的深入探索之旅.                 1.Hello M ...

  8. CENTOS 6.4 安装oracle 10g,手工建库及升级到10.2.0.5

    一. 数据库软件安装 参照官方手册 1.安装rpm包 注这里的yum直接用163的yum yum -y install binutils compat-libstdc++-33 compat-libs ...

  9. LCD1602写自定义字符的Verilog源码

    开发工具:Quartus II 9.1: 仿真软件:Questa Sim 10.0c: 硬件平台:Terasic DE2-115(EP2C35F672C6): 外设:hd44780控制器lcd1602 ...

  10. [转载]Macaca 测试 Android 应用:UIAutomator

    在用macaca进行自动化测试,想试一下移动端测试,看到这篇文章,尝试一下. 前言 用 Macaca 可以快速.便捷地进行安卓 native 的自动化测试,用简洁的 js 语法,写下用例,然后执行 M ...