自己定义的控件属性:
[Browsable(true),Bindable(true),Category("数据"),DefaultValue(""),Localizable(true),
        Description("Items列表项集合"), DesignerSerializationVisibility(DesignerSerializationVisibility.Content),//指定集合属性可序列化
        Editor(typeof(DropTextEditor), typeof(UITypeEditor)),
       PersistenceMode(PersistenceMode.InnerDefaultProperty)]//指定属性在服务器控件中保持为内部文本。还指示将该属性定义为元素的默认属性。只能指定一个属性为默认属性
        public DropList Items
        {
            get
            {
                if (ViewState["_items"] == null)
                {
                    ViewState["_items"] = new DropList();
                }
                return (DropList)ViewState["_items"];
            }
            set { ViewState["_items"] = value; }
        }
//Items属性编辑器相关类
#region Items属性编辑器

#region DropText属性编辑器
    /// <summary>
    /// 可编辑下拉列表框的Items属性编辑器
    /// 提供一个用户界面,该界面可以在设计时编辑大多数类型(此处为DropItem)的集合。
    /// </summary>
    public class DropTextEditor : System.ComponentModel.Design.CollectionEditor
    {
        /// <summary>
        /// 构造函数
        /// </summary>
        /// <param name="type"></param>
        public DropTextEditor(Type type)
            : base(type)
        {
        }

/// <summary>
        /// 指示是否可一次选择多个集合项
        /// </summary>
        /// <returns>如果可以同时选择多个集合成员,则为 true;否则,为 false。此处默认情况返回 false</returns>
        protected override bool CanSelectMultipleInstances()
        {
            return false;
        }
        /// <summary>
        /// 获取此集合需包含的数据类型
        /// </summary>
        /// <returns>类型:System.Type(此 Type 指示集合需包含的数据类型。)</returns>
        protected override Type CreateCollectionItemType()
        {
            return typeof(DropItem);
        }
    }
    #endregion

#region DropItem类
    /// <summary>
    /// 可编辑下拉列表框的Items属性类
    /// </summary>
    [TypeConverter(typeof(ExpandableObjectConverter))]
    [Serializable]//将DropItem类指示为可以序列化
    public class DropItem
    {
        /// <summary>
        /// 构造函数
        /// </summary>
        public DropItem()
        {
        }
        /// <summary>
        /// 构造函数
        /// </summary>
        /// <param name="str_Text">文本内容</param>
        /// <param name="str_Value">文本值</param>
        public DropItem(string str_Text,string str_Value)
        {
            Text = str_Text;
            Value = str_Value;
        }
        private string text;
        private string _value;
        /// <summary>
        /// 文本
        /// </summary>
        public string Text
        {
            get { return text; }
            set { text = value; if (string.IsNullOrEmpty(Value)) { Value = value; } }
        }
        /// <summary>
        /// 文本所对应值
        /// </summary>
        public string Value
        {
            get { return _value; }
            set { _value = value; if (string.IsNullOrEmpty(Text)) { Text = value; } }
        }
    }
    #endregion

#region DropList类,继承自ArrayList
    /// <summary>
    /// 下拉列表框Items属性的基类继承自System.Collections.ArrayList
    /// </summary>
    [Serializable]
    public class DropList : ArrayList
    {
        /// <summary>
        /// 将DropItem添加到DropList结尾处
        /// </summary>
        /// <param name="value"></param>
        /// <returns></returns>
        public int Add(DropItem value)
        {
            return base.Add(value);
        }
    }
    #endregion

#endregion

C# 属性控件的应用(备忘)的更多相关文章

  1. vb6中webbrowser控件树转换备忘

    Dim doc As HTMLDocument Set doc = WebBrowser1.Document Dim inputs As IHTMLElementCollection Set inpu ...

  2. jquery上传控件uploadify使用备忘

    我简单修改了js和样式,效果如下 使用起来也是超简单,将文件下载并解压到你网站目录下,然后 .在使用位置插入代码 ============================= <iframe wi ...

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

    转自原文 在C#中使用属性控件添加属性窗口 第一步,创建在应用程序中将要展现的字段属性为public公有属性.其中,所有的属性必须有get和set的方法(如果不设置get方法,则要显示的属性不会显示在 ...

  4. 属性控件CMFCPropertyGridCtrl简单用法

    这是我的原创! 用一堆的编辑框下拉框做配置界面,很是繁琐,还要对齐排版……用这个属性控件 CMFCPropertyGridCtrl 就可以统一风格了. //初始化 CMFCPropertyGridCt ...

  5. C# 属性控件2

    PropertyGrid,.net框架下的一个控件,这是一个软件升级的项目,原来的软件用的是C++,控件用的还是第三方,这次升级到visual studio .net4.0版本,原以为.net的东西用 ...

  6. Extjs 属性控件[转载]

    Ext.form.TimeField: 配置项:            maxValue:列表中允许的最大时间            maxText:当时间大于最大值时的错误提示信息          ...

  7. delphi控件属性大全-详解-简介

    http://blog.csdn.net/u011096030/article/details/18716713 button 组件: CAPTION 属性 :用于在按钮上显示文本内容 Cancel ...

  8. VB6 仿.netWinfrom控件 Anchor属性类

    vb6中控件没有anchor与dock属性,窗体变大后原来要在resize中调整控件的move属性,否则就面目全非了.网上找到一些调整控件大小的代码,发现并不太适合自己,于是按照思路自己做了一个类似a ...

  9. [转]Delphi 控件属性和事件

    常用[属性] Action:该属性是与组件关联的行为,允许应用程序集中响应用户命令 Anchors:与组件连接的窗体的位置点 Align:确定组件的对齐方式 AutoSize:确定组件是否自动调整其大 ...

随机推荐

  1. mongodb-replset安装

    节点分配 10.110.18.89 10.110.18.90 10.110.18.94 配置文件 systemLog: destination: file path: "/data/mong ...

  2. Swift 08.页面传值

    OC中经常用到的一种初始化控制器的方法.比如A push B.并且将A的一个值:value 传递给B 使用.简单的办法就是 在B重构init方法.比如在.h 中定义: - ()initValue:(N ...

  3. UIScrollView内容缩放

    •有些时候,我们可能要对某些内容进行手势缩放,如下图所示 UIScrollView不仅能滚动显示大量内容,还能对其内容进行缩放处理 也就是说,要完成缩放功能的话,只需要将需要缩放的内容添加到UIScr ...

  4. 临界区 TRTLCriticalSection 和 TCriticalSection

    临界区对象TCriticalSection(Delphi) 与 TRtlCriticalSection 的区别 TRtlCriticalSection 是一个结构体,在windows单元中定义: 是I ...

  5. 关于XE10下Indy发送字符串编码的问题

    在与硬件对接的过程中,之前用D7环境下的UDPServer.Post发送的指令,硬件可正常识别并正常显示, 后来使用到XE10,重新编译之前的源码,发现所有汉字乱码显示了: 后通过对接收数据发现,实际 ...

  6. WebApi系列~基于RESTful标准的Web Api

    微软的web api是在vs2012上的mvc4项目绑定发行的,它提出的web api是完全基于RESTful标准的,完全不同于之前的(同是SOAP协议的)wcf和webService,它是简单,代码 ...

  7. github上面建立分支

    首先是有一个github的账户,然后随便开个项目. 好了,现在把git命令行打开,输入下面几行代码. git clone https://github.com/user/repository.git ...

  8. asp.net自己创建的app_code文件夹中的类不能访问的解决办法

    在Web应用程序中不能通过右键项目-〉”添加“-〉”添加ASP.NET文件夹“方式添加 .因为Web应用程序中App_Code就不存在 .不过可以通过手动的方式创建,添加一个文件夹命名为App_Cod ...

  9. LAMP理论整理

    关于PHP 官网:http://www.php.net 一.PHP简介 PHP是通用服务器端脚本编程语言,其主要用于web开发以实现动态web页面,它也是最早实现将脚本嵌入HTML源码文档中的服务器端 ...

  10. c++学习笔记1

    1.explicit 防止隐式类型转换 2.cbegin() cend()等价于返回 const_iterator 类型 3.it->mem 等价于 (*it).mem 4.不允许使用一个数组初 ...