如何添加用户控件的属性

  1. //本文章说明如何添加用户控件的属性.
  2. //达到图片中的效果.

  3. //要编写用户控件需要加此声明
  4. using System;   
  5. using System.Web.UI;  
  6. //要有属性栏输入输出,就要加此声明.
  7. using System.ComponentModel;   
  8.   
  9. namespace CustomComponents   
  10. {   
  11. //DefaultPropertyAttribute:为组件指定一个默认的属性,
  12. //当用户在Form设计器上选择一个控件的时候,默认属性会在属性浏览器里被选中。     
  13.         [DefaultPropertyAttribute("CardholderNameText")]   
  14.     
  15. //还不知道是什么作用.
  16.         [ToolboxData(@"<{0}:CreditCardForm2  
  17.         PaymentMethodText='信用卡类型' CreditCardNoText='信用卡卡号'  
  18.         CardholderNameText='信用卡持有者姓名' SubmitButtonText = '提交'   
  19.         runat='server'></{0}:CreditCardForm2>")   
  20.         ]   
  21.     publicclass CreditCardForm2 : Control   
  22.         {   
  23.         privatestring paymentMethodText = "信用卡类型";   
  24.         privatestring creditCardNoText = "信用卡卡号";   
  25.         privatestring cardholderNameText = "信用卡持有者姓名";   
  26.         privatestring expirationDateText = "最后使用时间";   
  27.         privatestring submitButtonText = "提交";   
  28.   
  29. //BrowsableAttribute:描述是否一个属性或事件应该被显示在属性浏览器里。
  30.             [BrowsableAttribute(false)]   
  31. //DescriptionAttribute:当用户在属性浏览器里选择属性的时候,
  32. //description里指定的文本会显示在属性浏览器的下边,向用户显示属性的功能。
  33.             [DescriptionAttribute("获取和设置信用卡类型")]   
  34. //DefaultValueAttribute:为一个简单类型的属性设置一个默认值。
  35.             [DefaultValueAttribute("信用卡类型")]   
  36. //CategoryAttribute:描述一个属性或事件的类别,当使用类别的时候,
  37. //属性浏览器按类别将属性分组。
  38.             [CategoryAttribute("Appearance")]   
  39.         publicvirtualstring PaymentMethodText   
  40.             {   
  41.             get { returnthis.paymentMethodText; }   
  42.             set { this.paymentMethodText = value; }   
  43.             }   
  44.   
  45.             [BrowsableAttribute(true)]   
  46.             [DescriptionAttribute("获取或设置信用卡卡号")]   
  47.             [DefaultValueAttribute("信用卡卡号")]   
  48.             [CategoryAttribute("Appearance")]   
  49.         publicvirtualstring CreditCardNoText   
  50.             {   
  51.             get { returnthis.creditCardNoText; }   
  52.             set { this.creditCardNoText = value; }   
  53.             }   
  54.   
  55.             [BrowsableAttribute(true)]   
  56.             [DescriptionAttribute("获取或设置信用卡持有者姓名")]   
  57.             [DefaultValueAttribute("信用卡持有者姓名")]   
  58.             [CategoryAttribute("Appearance")]   
  59.         publicvirtualstring CardholderNameText   
  60.             {   
  61.             get { returnthis.cardholderNameText; }   
  62.             set { this.cardholderNameText = value; }   
  63.             }   
  64.   
  65.             [BrowsableAttribute(true)]   
  66.             [DescriptionAttribute("获取或设置最后使用时间")]   
  67.             [DefaultValueAttribute("最后使用时间")]   
  68.             [CategoryAttribute("Appearance")]   
  69.         publicvirtualstring ExpirationDateText   
  70.             {   
  71.             get { returnthis.expirationDateText; }   
  72.             set { this.expirationDateText = value; }   
  73.             }   
  74.   
  75.             [BrowsableAttribute(true)]   
  76.             [DescriptionAttribute("获取或设置按钮标签")]   
  77.             [DefaultValueAttribute("提交")]   
  78.             [CategoryAttribute("Appearance")]   
  79.         publicvirtualstring SubmitButtonText   
  80.             {   
  81.             get { returnthis.submitButtonText; }   
  82.             set { this.submitButtonText = value; }   
  83.             }   
  84.   
  85.         protectedoverridevoid Render(HtmlTextWriter writer)   
  86.             {   
  87.                 writer.Write("<table style='width:287px;height:124px;border-width:0;'>");   
  88.                 writer.Write("<tr>");   
  89.                 writer.Write("<td>" + PaymentMethodText + "</td>");   
  90.                 writer.Write("<td>");   
  91.                 writer.Write("<select name='PaymentMethod' id='PaymentMethod' style='width:100%;'>");   
  92.                 writer.Write("<option value='0'>Visa</option>");   
  93.                 writer.Write("<option value='1'>MasterCard</option>");   
  94.                 writer.Write("</select>");   
  95.                 writer.Write("</td>");   
  96.                 writer.Write("</tr>");   
  97.                 writer.Write("<tr>");   
  98.                 writer.Write("<td>" + CreditCardNoText + "</td>");   
  99.                 writer.Write("<td><input name='CreditCardNo' id='CreditCardNo' type='text' /></td>");   
  100.                 writer.Write("</tr>");   
  101.                 writer.Write("<tr>");   
  102.                 writer.Write("<td>" + CardholderNameText + "</td>");   
  103.                 writer.Write("<td><input name='CardholderName' id='CardholderName' type='text' /></td>");   
  104.                 writer.Write("</tr>");   
  105.                 writer.Write("<tr>");   
  106.                 writer.Write("<td>" + ExpirationDateText + "</td>");   
  107.                 writer.Write("<td>");   
  108.                 writer.Write("<select name='Month' id='Month'>");   
  109.             for (int day = 1; day < 13; day++)   
  110.                 {   
  111.                 if (day < 10)   
  112.                         writer.Write("<option value='" + day.ToString() + "'>" + "0" + day.ToString() + "</option>");   
  113.                 else  
  114.                         writer.Write("<option value='" + day.ToString() + "'>" + day.ToString() + "</option>");   
  115.                 }   
  116.                 writer.Write("</select>");   
  117.                 writer.Write(" ");   
  118.                 writer.Write("<select name='Year' id='Year'>");   
  119.             for (int year = 2005; year < 2015; year++)   
  120.                 {   
  121.                     writer.Write("<option value='" + year.ToString() + "'>" + year.ToString() + "</option>");   
  122.                 }   
  123.                 writer.Write("</select>");   
  124.                 writer.Write("</td>");   
  125.                 writer.Write("</tr>");   
  126.                 writer.Write("<tr>");   
  127.                 writer.Write("<td align='center' colspan='2'>");   
  128.                 writer.Write("<input type='submit' value='" + SubmitButtonText + "' />");   
  129.                 writer.Write("</td>");   
  130.                 writer.Write("</tr>");   
  131.                 writer.Write("</table>");   
  132.   
  133.             base.Render(writer);   
  134.             }   
  135.         }   
  136. }   
  137.   
  138. //在这个属性之上有两个Attribute,这两个attribute描述了控件在设计时所表现出来的特征。我们来看看在控件设计中有哪些主要用到的设计时Attribute。    
  139. //BrowsableAttribute:描述是否一个属性或事件应该被显示在属性浏览器里。   
  140. //CategoryAttribute:描述一个属性或事件的类别,当使用类别的时候,属性浏览器按类别将属性分组。   
  141. //DescriptionAttribute:当用户在属性浏览器里选择属性的时候,description里指定的文本会显示在属性浏览器的下边,向用户显示属性的功能。   
  142. //BindableAttribute:描述是否一个属性倾向于被绑定。   
  143. //DefaultPropertyAttribute:为组件指定一个默认的属性,当用户在Form设计器上选择一个控件的时候,默认属性会在属性浏览器里被选中。      
  144. //DefaultValueAttribute:为一个简单类型的属性设置一个默认值。   
  145. //EditorAttribute:为属性指定一个特殊的编辑器。   
  146. //LocalizableAttribute:指示一个属性是否能被本地化,任何有这个Attribute的属性将会被持久化到资源文件里。      
  147. //DesignerSerializationVisibilityAttribute:指示一个属性是否或者如何持久化到代码里。   
  148. //TypeConverterAttribute:为属性指定一个类型转换器,类型转换器能将属性的值转化成其它的数据类型。   
  149. //DefaultEventAttribute:为组件指定一个默认的事件,当用户在form设计其中选择一个控件的时候,在属性浏览器中这个事件被选中。   
  150. //这些设计时的Attribute时很重要的,如果使用的好,将会对用户的使用带来很大的便利。


转自:http://hi.baidu.com/05944/blog/item/24db324e023770cbd1c86a9f.html

posted @ 2010-01-15 15:19  哈仔  阅读(2459)  评论(0编辑  收藏  举报