使用过 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. Blackfin DSP(八):BF533的DMA

    #include <cdefBF533.h> #include <sys\exception.h> #define POLC 0x00004000 #define PORT_C ...

  2. Chap4: question: 19 - 28

    19. 二叉树的镜像(递归) 即:交换所有节点的左右子树.从下往上 或 从上往下 都可以. #include <iostream> #include <string> usin ...

  3. HDU2045

    http://acm.hdu.edu.cn/showproblem.php?pid=2045 如果n-1的颜色和1相同,那么n有两种走法,如果n-1 的颜色和1不同,那么n只有1种选择方法 公式就是f ...

  4. 剑指Offer:面试题19——二叉树的镜像(java实现)

    问题描述: 操作给定的二叉树,将其变换为源二叉树的镜像. 二叉树结点定义为: public class TreeNode { int val = 0; TreeNode left = null; Tr ...

  5. mybatis-generator-core生成代码

    mybatis-generator-core-1.3.3下载地址:http://blog.mybatis.org/p/products.html 下载后名解压,进入lib目录 修改一个Generato ...

  6. PCI Express(一)- Connector

    在FPGA4FUN上看到一篇介绍PCI-E的帖子,简单易懂,适合入门,特地搬过来 原文地址:http://www.fpga4fun.com/PCI-Express.html 前言: As PCI Ex ...

  7. SQLServer中char、varchar、nchar、nvarchar的区别:

    (1)       定义: char:    固定长度,存储ANSI字符,不足的补英文半角空格. nchar:   固定长度,存储Unicode字符,不足的补英文半角空格 varchar:  可变长度 ...

  8. SQLite事务管理

    事务管理对数据库一致性是至关重要的.数据库实现ACID属性以确保一致性.SQLite依赖于本地文件锁和页日志来实现ACID属性.SQLite只支持扁平事务,并不支持事务嵌套和保存点能力. 1.1 事务 ...

  9. Device Path in WinPrefetchView

    As we know that the Prefetch file is used for optimizing the loading time of the application in the ...

  10. Provisional headers are shown,本地测试成功,服务器运行却失败

    基于MVC的项目 具体情况是一个页面在访问的时候进不了首页,但详细页面却可以进去 下面说说解决方法和思路,以便找出问题所在 第一:把服务器代码下载到本地运行,代码是否出错,出错了,问题找到了,没出错接 ...