如何使用PropertyGrid控件实现Visual Studio .NET IDE中的属性页

本文内容

  • 概述
  • 平台需求
  • 实验一:小试牛刀
  • 实验二:用PropertyGrid来控制自己的类

概述

使用微软Visual Studio .NET IDE的人一定会觉得界面里的Property那一页非常好,它能让人们方便地设置控件的各种属性。

如何在您自己编写的程序里面使用这个控件呢?我们将通过下面两个例子来给您介绍如何使用这个控件。

平台需求

Visual Studio .NET
Visual C# .NET

实验一:小试牛刀

1、打开Visual Studio .NET,新建一个C# Windows Application项目。
2、往Form1上拖两个界面控件,一个是Button,另外一个就是PropertyGrid (在Visual Stuido .NET IDE中,默认情况下是不显示该控件的,您可以右键点击"Toolbox"那一页,选择"Customize Toolbox …",在弹出的新窗口中,选择".NET Framework Components",在"PropertyGrid"前的方框中打上勾,并点击"OK") 。
3、选中PropertyGrid1,在Property页中将SelectObject属性设置为button1。

img_1

4、编译并运行该项目。
您可以发现,一旦您更改PropertyGrid中的值,就可以发现Button上相应的属性发生了变化。

img_2

实验二:用PropertyGrid来控制自己的类

1、打开Visual Studio .NET,新建一个C# Windows Application项目。
2、往Form1上拖一个PropertyGrid 控件。
3、在项目中添加一个新的cs文件,命名为MyType.cs。将下列代码copy代该文件中,覆盖原来的代码。

using System;
using System.Data;
using System.ComponentModel;
using System.Drawing;
using System.Windows.Forms;

namespace TestPropertyPage
{
    public enum Day
    { Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, };

    public class myType
    {
        private int _value;
        private Point _center;
        private Color _highlight;
        private Font _title = System.Windows.Forms.Control.DefaultFont;
        private Day _startDay = Day.Sunday;

        public myType()
        {
        }

        [Description("This is the center point position."), Category("Location")]
        public Point Center
        {
            get { return this._center; }
            set { this._center = value; }
        }

        [Description("This is the highlight color."), Category("Appearance")]
        public Color HighLight
        {
            get { return this._highlight; }
            set { this._highlight = value; }
        }

        [Description("This is the title's font style."), Category("Appearance")]
        public Font TitleFont
        {
            get { return this._title; }
            set
            {
                if (value != null)
                    this._title = value;
            }
        }

        [Description("What day is today?"), Category("Others")]
        public Day StartDay
        {
            get { return this._startDay; }
            set { this._startDay = value; }
        }
    }
}

4、在Form1.cs中添加如下代码:

1)在Form1类中添加一个成员变量:

private myType newType = null;

2)然后在构造函数中添加:

this.newType = new myType();
this.propertyGrid1.SelectedObject=this.newType;

5、编译并运行该项目。

作者:韩定一
2002 年 8 月 2 日
Contributors: FHL