zoukankan      html  css  js  c++  java
  • WinForm窗体PropertyGrid控件的使用

      使用过 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;
    }

      运行效果如下所示:

      

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

    • DescriptionAttribute      设置显示在属性下方说明帮助窗格中的属性文本。这是一种为活动属性(即具有焦点的属性)提供帮助文本的有效方法。
    • CategoryAttribute       设置属性在网格中所属的类别。当您需要将属性按类别名称分组时,此特性非常有用。如果没有为属性指定类别,该属性将被分配给杂项类别。
    • BrowsableAttribute       表示是否在网格中显示属性。此特性可用于在网格中隐藏属性。默认情况下,公共属性始终显示在网格中。
    • ReadOnlyAttribute        表示属性是否为只读。此特性可用于禁止在网格中编辑属性。默认情况下,带有 get 和 set 访问函数的公共属性在网格中是可以编辑的。
    • DefaultValueAttribute    表示属性的默认值。如果希望为属性提供默认值,然后确定该属性值是否与默认值相同,则可使用此特性。可以将此特性应用于所有属性。
    • DefaultPropertyAttribute 表示类的默认属性。在网格中选择某个类时,将首先突出显示该类的默认属性。
  • 相关阅读:
    信息收集之DNS域名解析
    集合遍历利器 -- 迭代器模式 介绍 使用场景案例 优缺点及程序演示
    简单工厂的霸霸 -- 抽象工厂模式 介绍 使用场景案例 优缺点及程序演示
    可能是目前最易理解的手写promise
    chrome 开发者工具实用技巧
    gulp常用插件之modernizr使用
    koa-cors 跨域设置中间件
    在nodejs 中如何fs文件系统模块
    nodejs操作MongoDB数据库 MongoDB增、删、改、查
    vue动态渲染样式 class
  • 原文地址:https://www.cnblogs.com/gaohongchen01/p/4801715.html
Copyright © 2011-2022 走看看