C# 属性控件的应用(备忘)
自己定义的控件属性:
[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# 属性控件的应用(备忘)的更多相关文章
- vb6中webbrowser控件树转换备忘
Dim doc As HTMLDocument Set doc = WebBrowser1.Document Dim inputs As IHTMLElementCollection Set inpu ...
- jquery上传控件uploadify使用备忘
我简单修改了js和样式,效果如下 使用起来也是超简单,将文件下载并解压到你网站目录下,然后 .在使用位置插入代码 ============================= <iframe wi ...
- 在C#中使用属性控件添加属性窗口
转自原文 在C#中使用属性控件添加属性窗口 第一步,创建在应用程序中将要展现的字段属性为public公有属性.其中,所有的属性必须有get和set的方法(如果不设置get方法,则要显示的属性不会显示在 ...
- 属性控件CMFCPropertyGridCtrl简单用法
这是我的原创! 用一堆的编辑框下拉框做配置界面,很是繁琐,还要对齐排版……用这个属性控件 CMFCPropertyGridCtrl 就可以统一风格了. //初始化 CMFCPropertyGridCt ...
- C# 属性控件2
PropertyGrid,.net框架下的一个控件,这是一个软件升级的项目,原来的软件用的是C++,控件用的还是第三方,这次升级到visual studio .net4.0版本,原以为.net的东西用 ...
- Extjs 属性控件[转载]
Ext.form.TimeField: 配置项: maxValue:列表中允许的最大时间 maxText:当时间大于最大值时的错误提示信息 ...
- delphi控件属性大全-详解-简介
http://blog.csdn.net/u011096030/article/details/18716713 button 组件: CAPTION 属性 :用于在按钮上显示文本内容 Cancel ...
- VB6 仿.netWinfrom控件 Anchor属性类
vb6中控件没有anchor与dock属性,窗体变大后原来要在resize中调整控件的move属性,否则就面目全非了.网上找到一些调整控件大小的代码,发现并不太适合自己,于是按照思路自己做了一个类似a ...
- [转]Delphi 控件属性和事件
常用[属性] Action:该属性是与组件关联的行为,允许应用程序集中响应用户命令 Anchors:与组件连接的窗体的位置点 Align:确定组件的对齐方式 AutoSize:确定组件是否自动调整其大 ...
随机推荐
- sphinx索引分析续
4.10 同义词文件/Synonym 同义词文件格式 from => to AT &T => AT&T AT & T => AT & T standa ...
- Android ADB 用法
adb 全称是 Android Debug Bridge, 就是起到调试桥的作用. 用来操作android设备的 阅读目录 adb 有什么用 借助adb工具, 我们可以管理设备或手机模拟器的状态, ...
- Windows Phone 10如何借Windows 10的东风
距微软发布Windows Phone 7已经四年多了,WinPhone的市场份额一直萎糜不前.去年微软收购诺基亚,如特洛伊木马般戏剧,却没有挽救WinPhone,甚至出现下滑,已经不足3%,已经基本被 ...
- C语言模块化编译介绍
C语言模块化编译介绍 模块化编程的概念 所谓模块化变成(多文件开发),就是多文件(.c文件)编程,一个.c文件和一个.h文件可以被称为一个模块. 头文件开发的注意事项: 1)头文件中可以和C程序一样引 ...
- 转别人的 STM32外部中断使用注意事项
前言:这些问题都是我之前在工作中遇到的,后来觉得需要总结,自己记忆不好,所以在这个给自己打个mark. 一:触发方式 STM32 的外部中断是通过边沿来触发的,不支持电平触发: 二:外部中断分组 ST ...
- JavaScript 开发的45个经典技巧
JavaScript是一个绝冠全球的编程语言,可用于Web开发.移动应用开发(PhoneGap.Appcelerator).服务器端开发(Node.js和Wakanda)等等.JavaScript还是 ...
- 非maven项目导入idea几点心得总结
这个问题一共有3种解决办法1. 你下载好的文件应该是src 和Webcontent是在同一个目录下的.只要把Webcontent放入到src下就行.这种就变成maven的目录结构.因为你这个目录结构应 ...
- java开发连接Oracle 12c采用PDB遇到问题记录
今天初次使用java连接Oracle 12c,遇到各种问题,为方便后续查询,在汇总了问题记录及解决方案如下. ORA-28040: No matching authentication protoco ...
- DataStructure——红黑树学习笔记
1.前言 本文伪码和解释参考: http://blog.csdn.net/v_JULY_v/article/details/6105630 C实现的源码本文未贴出,请见: http://blog.cs ...
- OC基础--self关键字
Self的使用: 1 self不能离开类 离开类之后没有任何意义 2 self会自动区分类方法和对象方法 3 使用self的时候只需要关注self在哪一个方法中 如果在类方法中使用self 那 ...