在C#中使用属性控件添加属性窗口

转载 2007年09月25日 16:45:00
在VS.NET 中,我们可以很方便地使用属性窗口来对某个控件的属性进行设置,那么,我们有没有想过,如果在应用程序中,在对程序中的自定义的属性进行设置时,显示一个象属性窗口一样的窗体,能对其中的属性方便的设置呢?就象下图所示的一样。



   答案是完全可以的。我们可以使用微软提供的property属性控件来实现该功能。首先,我们新建一个c#的windows应用程序,之后在工具箱中,鼠标右键点选工具箱(TOOLBOX),在弹出的菜单中选择“添加/移除项”,如下图所示:


   在弹出的窗口中,选择.NET Freamwork components窗口,再选择其中的property grid控件,点击选择就完成了对控件的加入,如下图所示:


   现在,我们可以开始使用该控件了。第一步,创建在应用程序中将要展现的字段属性为public公有属性。其中,所有的属性必须有get和set的方法(如果不设置get方法,则要显示的属性不会显示在属性控件中)。为了设置相关的属性,必须设置下面的一些关于属性控件的属性值,如下表所示:



属性值 含义 CategoryAttribute 该属性对在Property控件中的属性按字母顺序进行归类 DescriptionAttribute 其值为对每个属性的具体文字描述,将会显示在property控件的底部 BrowsableAttribute 该值为是否在property控件中显示或者隐藏某个属性 ReadOnlyAttribute 该值为某个属性值是否在property控件中只读 DefaultValueAttribute 每个属性的默认值
   接下来,我们创建一个用户类,并且使用属性控件,使得可以在属性控件框中改变其值。我们先引入相关的命名空间:

using System.ComponentModel;
   之后,创建相关的类,设置有关的属性,代码如下:

/// Customer class to be displayed in the property grid /// </summary> /// [DefaultPropertyAttribute("Name")]
public class Customer
{
  private string _name;
  private int _age;
  private DateTime _dateOfBirth;
  private string _SSN;
  private string _address;
  private string _email;
  private bool _frequentBuyer;
  [CategoryAttribute("ID Settings"), DescriptionAttribute("Name of the customer")]   public string Name
  {
   get
   {
    return _name;
   }
   set
   {
    _name = value;
   }
  }
  [CategoryAttribute("ID Settings"), DescriptionAttribute("Social Security Number of the customer")]

  public string SSN
  {
   get
   {
    return _SSN;
   }
   set
   {
    _SSN = value;
   }
  }
  [CategoryAttribute("ID Settings"), DescriptionAttribute("Address of the customer")]
  public string Address
  {
   get
   {
    return _address;
   }
   set
   {
    _address = value;
   }
  }
  [CategoryAttribute("ID Settings"), DescriptionAttribute("Date of Birth of the Customer (optional)")]
  public DateTime DateOfBirth
  {
   get { return _dateOfBirth; }
   set { _dateOfBirth = value; }
  }
  [CategoryAttribute("ID Settings"), DescriptionAttribute("Age of the customer")]
  public int Age
  {
   get { return _age; }
   set { _age = value; }
  }
  [CategoryAttribute("Marketting Settings"), DescriptionAttribute("If the customer has bought more than 10 times, this is set to true")]
  public bool FrequentBuyer
  {
   get { return _frequentBuyer; }
   set { _frequentBuyer = value; }
  }
  [CategoryAttribute("Marketting Settings"), DescriptionAttribute("Most current e-mail of the customer")]
  public string Email
  {
   get { return _email; }
   set { _email = value; }
  }
  public Customer() { }
}
   可以看到,在上面的代码中,我们对customer类中的属性进行了设置,如姓名,出生日期,地址等。
接着,我们要为创建的customer类创建一个实例,并且将其与属性控件绑定。属性控件会自动根据类中对属性的相关设置,从而在界面中显示有关的属性,并且还可以进行编辑,比如,可以对生日属性进行修改,修改时会弹出日历控件框,十分方便。代码如下:

private void Form1_Load(object sender, System.EventArgs e)
{
//创建bill对象,实例化CUSTOMER类
Customer bill = new Customer();
//赋值给属性
bill.Age = 50;
bill.Address = " 114 Maple Drive ";
bill.DateOfBirth = Convert.ToDateTime(" 9/14/78");
bill.SSN = "123-345-3566";
bill.Email = “bill@aol.com”
bill.Name = "Bill Smith";
//将对象绑定到property控件中
propertyGrid1.SelectedObject = bill;
}
   最后,运行程序,我们就得到了本文一开始图示的结果了。再来回顾下该程序,其中我们使用了CatrgoryAttribute属性,定义了id settings和MarketSettings,它们在属性控件中以分类的形式出现(注意它们前有个“+”号,点击可以展开看到其子属性)。同时,我们每当选择一个属性时,在属性控件框的下部,会同时显示该属性的相关描述。 

C#如何创建自定义控件以及添加自定义属性和事件使用

C#本身提供了很强大的控件库,但是很多控件库的功能只是一些基本的功能,就比如最简单的按钮,C#提供了最基础的按钮使用方法,但是如果要增加一些功能,比如按钮按下要一个图片,弹起要另一个图片这样的工作。当...
  • Im1smb
  • Im1smb
  • 2017年07月20日 20:31
  • 528

3.为自定义控件添加属性

3.为自定义控件添加属性 原文请看我博客:http://clzf.co/blog.php?id=3 前面"废话"了两篇 现在开始慢慢的踏入自定义控件开发的主题 首先来说说属性 对于一个控件来说属...
  • crystal_lz
  • crystal_lz
  • 2014年03月28日 20:04
  • 11398

C#为控件或自定义控件添加自定义属性,自定义事件

1.创建一个自定义控件UserControl1,如图1所示: 图1 2.代码如下:     // 此类用于实现绘制一条水平分隔线, 按F5运行一次,再拖动当前控件到Form窗体即可看到      ...
  • DannyIsCoder
  • DannyIsCoder
  • 2017年04月19日 23:56
  • 3999

DropDownList控件的使用(方法,属性)

在.net中,DropDownList和ListBox是最常用的两个LIST控件,我的学习笔记也从这里开始吧! 一、DropDownList 命名空间:System.Web.UI.WebContr...
  • shan1774965666
  • shan1774965666
  • 2014年09月16日 16:24
  • 3704

Microsoft Visual Studio控件常用属性简介

Microsoft Visual Studio工具箱提供了大量的基本控件供大家使用,也是大部分初学者做窗体程序必不可少的一部分,笔者概括了一部分常用控件的基本属性供大家参考。由于笔者能力有限,如有错误...
  • sinat_24503693
  • sinat_24503693
  • 2016年07月28日 18:13
  • 1967

c#的自定义控件中的属性像Items一样打开一个form的做法

今日需要弄UI和对象绑定,找到了魏琼东这位牛人的博客,在里面吸取了经验,自己做一个简单版的就好了,但问题就来了,不知道怎么实现以下标记的效果。 联想到combobox中的items也是这样的表现,...
  • tvvbbb
  • tvvbbb
  • 2016年01月05日 11:41
  • 1690

C#控件及常用属性整理【详细版】

1、窗体  1、常用属性  (1)Name属性:用来获取或设置窗体的名称,在应用程序中可通过Name属性来引用窗体。  (2) WindowState属性: 用来获取或设置窗体的窗口状态。 取值有三种...
  • wangzhen209
  • wangzhen209
  • 2016年04月13日 14:27
  • 1601

C#控件属性设置

一、 ComboBoxEdit 1、 如何使其不可编辑 TextEditStyle 设置为:DisableTextEditor 2、 如何设置鼠标为手形 Cursor 设置为:Hand 二、...
  • qq_37191147
  • qq_37191147
  • 2017年03月01日 21:40
  • 382

C# 操作 Word 修改word的高级属性中的自定义属性

直接上代码,代码如下: using System; using System.Collections.Generic; using System.Linq; using System.Text; us...
  • wgw335363240
  • wgw335363240
  • 2013年10月16日 10:03
  • 4571

【C#基础】之WinForm窗体常用控件的属性、方法及事件简介

今天结合自己以前搜集的一些资料简单总结下Winform窗体常用的控件使用及其属性、方法、事件等…… 一、按钮(Button)控件  几乎存在于所有Windows对话框中,是Windows应用程序中...
  • qly2046
  • qly2046
  • 2013年12月28日 10:48
  • 4288
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:在C#中使用属性控件添加属性窗口
举报原因:
原因补充:

(最多只允许输入30个字)