- //本文章说明如何添加用户控件的属性.
- //达到图片中的效果.
- //要编写用户控件需要加此声明
- using System;
- using System.Web.UI;
- //要有属性栏输入输出,就要加此声明.
- using System.ComponentModel;
- namespace CustomComponents
- {
- //DefaultPropertyAttribute:为组件指定一个默认的属性,
- //当用户在Form设计器上选择一个控件的时候,默认属性会在属性浏览器里被选中。
- [DefaultPropertyAttribute("CardholderNameText")]
- //还不知道是什么作用.
- [ToolboxData(@"<{0}:CreditCardForm2
- PaymentMethodText='信用卡类型' CreditCardNoText='信用卡卡号'
- CardholderNameText='信用卡持有者姓名' SubmitButtonText = '提交'
- runat='server'></{0}:CreditCardForm2>")
- ]
- publicclass CreditCardForm2 : Control
- {
- privatestring paymentMethodText = "信用卡类型";
- privatestring creditCardNoText = "信用卡卡号";
- privatestring cardholderNameText = "信用卡持有者姓名";
- privatestring expirationDateText = "最后使用时间";
- privatestring submitButtonText = "提交";
- //BrowsableAttribute:描述是否一个属性或事件应该被显示在属性浏览器里。
- [BrowsableAttribute(false)]
- //DescriptionAttribute:当用户在属性浏览器里选择属性的时候,
- //description里指定的文本会显示在属性浏览器的下边,向用户显示属性的功能。
- [DescriptionAttribute("获取和设置信用卡类型")]
- //DefaultValueAttribute:为一个简单类型的属性设置一个默认值。
- [DefaultValueAttribute("信用卡类型")]
- //CategoryAttribute:描述一个属性或事件的类别,当使用类别的时候,
- //属性浏览器按类别将属性分组。
- [CategoryAttribute("Appearance")]
- publicvirtualstring PaymentMethodText
- {
- get { returnthis.paymentMethodText; }
- set { this.paymentMethodText = value; }
- }
- [BrowsableAttribute(true)]
- [DescriptionAttribute("获取或设置信用卡卡号")]
- [DefaultValueAttribute("信用卡卡号")]
- [CategoryAttribute("Appearance")]
- publicvirtualstring CreditCardNoText
- {
- get { returnthis.creditCardNoText; }
- set { this.creditCardNoText = value; }
- }
- [BrowsableAttribute(true)]
- [DescriptionAttribute("获取或设置信用卡持有者姓名")]
- [DefaultValueAttribute("信用卡持有者姓名")]
- [CategoryAttribute("Appearance")]
- publicvirtualstring CardholderNameText
- {
- get { returnthis.cardholderNameText; }
- set { this.cardholderNameText = value; }
- }
- [BrowsableAttribute(true)]
- [DescriptionAttribute("获取或设置最后使用时间")]
- [DefaultValueAttribute("最后使用时间")]
- [CategoryAttribute("Appearance")]
- publicvirtualstring ExpirationDateText
- {
- get { returnthis.expirationDateText; }
- set { this.expirationDateText = value; }
- }
- [BrowsableAttribute(true)]
- [DescriptionAttribute("获取或设置按钮标签")]
- [DefaultValueAttribute("提交")]
- [CategoryAttribute("Appearance")]
- publicvirtualstring SubmitButtonText
- {
- get { returnthis.submitButtonText; }
- set { this.submitButtonText = value; }
- }
- protectedoverridevoid Render(HtmlTextWriter writer)
- {
- writer.Write("<table style='width:287px;height:124px;border-width:0;'>");
- writer.Write("<tr>");
- writer.Write("<td>" + PaymentMethodText + "</td>");
- writer.Write("<td>");
- writer.Write("<select name='PaymentMethod' id='PaymentMethod' style='width:100%;'>");
- writer.Write("<option value='0'>Visa</option>");
- writer.Write("<option value='1'>MasterCard</option>");
- writer.Write("</select>");
- writer.Write("</td>");
- writer.Write("</tr>");
- writer.Write("<tr>");
- writer.Write("<td>" + CreditCardNoText + "</td>");
- writer.Write("<td><input name='CreditCardNo' id='CreditCardNo' type='text' /></td>");
- writer.Write("</tr>");
- writer.Write("<tr>");
- writer.Write("<td>" + CardholderNameText + "</td>");
- writer.Write("<td><input name='CardholderName' id='CardholderName' type='text' /></td>");
- writer.Write("</tr>");
- writer.Write("<tr>");
- writer.Write("<td>" + ExpirationDateText + "</td>");
- writer.Write("<td>");
- writer.Write("<select name='Month' id='Month'>");
- for (int day = 1; day < 13; day++)
- {
- if (day < 10)
- writer.Write("<option value='" + day.ToString() + "'>" + "0" + day.ToString() + "</option>");
- else
- writer.Write("<option value='" + day.ToString() + "'>" + day.ToString() + "</option>");
- }
- writer.Write("</select>");
- writer.Write(" ");
- writer.Write("<select name='Year' id='Year'>");
- for (int year = 2005; year < 2015; year++)
- {
- writer.Write("<option value='" + year.ToString() + "'>" + year.ToString() + "</option>");
- }
- writer.Write("</select>");
- writer.Write("</td>");
- writer.Write("</tr>");
- writer.Write("<tr>");
- writer.Write("<td align='center' colspan='2'>");
- writer.Write("<input type='submit' value='" + SubmitButtonText + "' />");
- writer.Write("</td>");
- writer.Write("</tr>");
- writer.Write("</table>");
- base.Render(writer);
- }
- }
- }
- //在这个属性之上有两个Attribute,这两个attribute描述了控件在设计时所表现出来的特征。我们来看看在控件设计中有哪些主要用到的设计时Attribute。
- //BrowsableAttribute:描述是否一个属性或事件应该被显示在属性浏览器里。
- //CategoryAttribute:描述一个属性或事件的类别,当使用类别的时候,属性浏览器按类别将属性分组。
- //DescriptionAttribute:当用户在属性浏览器里选择属性的时候,description里指定的文本会显示在属性浏览器的下边,向用户显示属性的功能。
- //BindableAttribute:描述是否一个属性倾向于被绑定。
- //DefaultPropertyAttribute:为组件指定一个默认的属性,当用户在Form设计器上选择一个控件的时候,默认属性会在属性浏览器里被选中。
- //DefaultValueAttribute:为一个简单类型的属性设置一个默认值。
- //EditorAttribute:为属性指定一个特殊的编辑器。
- //LocalizableAttribute:指示一个属性是否能被本地化,任何有这个Attribute的属性将会被持久化到资源文件里。
- //DesignerSerializationVisibilityAttribute:指示一个属性是否或者如何持久化到代码里。
- //TypeConverterAttribute:为属性指定一个类型转换器,类型转换器能将属性的值转化成其它的数据类型。
- //DefaultEventAttribute:为组件指定一个默认的事件,当用户在form设计其中选择一个控件的时候,在属性浏览器中这个事件被选中。
- //这些设计时的Attribute时很重要的,如果使用的好,将会对用户的使用带来很大的便利。
转自:http://hi.baidu.com/05944/blog/item/24db324e023770cbd1c86a9f.html