对自定义控件的几个理解

it2022-05-05  111

using System; using System.Collections.Generic; using System.Web;

/// <summary> ///Attribute 的摘要说明 /// </summary> using System; using System.Web.UI; using System.ComponentModel;

namespace CustomComponents {       /// <summary>     /// [DefaultPropertyAttribute("CardholderNameText")]     /// 指定组件的默认属性。     /// 所有的特性实际上是类,按照约定,这些类的名字以'Attribute'结尾,     /// DefaultProperrtyAttribute实际上是一个DefaultProperrtyAttribute类     /// ToolboxDataAttribute 类     /// 默认情况下,Visual Studio 等工具的可视化设计器创建空标记。     /// 当将控件从可视化设计器的工具箱中拖放到设计图面时,这是表示该控件在默认状态时的标记。     /// 若要指定初始默认值,控件可以利用此属性。可以使用此属性自定义初始 HTML 内容;当将控件从工具箱中拖动到窗体上时,这些内容将放     /// 指定当从 Microsoft Visual Studio 等工具中的工具箱拖动自定义控件时为它生成的默认标记。     /// [ ToolboxData("<{0}:MyLabel runat= server Text=     /// MyLabel><{0}:MyLabel>") ]     /// </summary>     [DefaultPropertyAttribute("CardholderNameText")]     [ToolboxData(@"<{0}:CreditCardForm2     PaymentMethodText='信用卡类型' CreditCardNoText='信用卡卡号'     CardholderNameText='信用卡持有者姓名' SubmitButtonText = '提交'      runat='server'></{0}:CreditCardForm2>")     ]     public class CreditCardForm2 : Control     {         private string paymentMethodText = "信用卡类型";         private string creditCardNoText = "信用卡卡号";         private string cardholderNameText = "信用卡持有者姓名";         private string expirationDateText = "最后使用时间";         private string submitButtonText = "提交";

        /// <summary>         /// BrowsableAttribute 类         /// 指定一个属性 (Property) 或事件是否应显示在“属性”窗口中。         /// [Browsable(true)]         /// DescriptionAttribute 类         /// 指定属性 (Property) 或事件的说明         /// DefaultValueAttribute 类         /// 指定属性 (Property) 的默认值         /// [DefaultValue(false)]         /// CategoryAttribute 类         /// 指定当属性 (Property) 或事件显示在一个设置为“按分类顺序”模式的 PropertyGrid 控件中时,         /// 用于给属性或事件分组的类别的名称         /// 一个 CategoryAttribute,它指示在一个设置为 Categorized 模式的 PropertyGrid 控件中列出属性 (Property) 或事件时,         /// 将关联的属性 (Property) 或事件与之关联的类别。         /// 如果没有对属性或事件应用 CategoryAttribute,则 PropertyGrid 将属性 (Property) 或事件与“杂项”类别关联。         /// 通过在 CategoryAttribute 的构造函数中指定类别的名称,可以为任何名称创建新的类别。         ///Category 属性 (Property) 指示该属性 (Attribute) 所代表的类别的名称。Category 属性 (Property) 还以透明方式对类别名称进行本地化。         ///         /// </summary>         [BrowsableAttribute(true)]         [DescriptionAttribute("获取和设置信用卡类型")]         [DefaultValueAttribute("信用卡类型")]         [CategoryAttribute("Appearance")]         public virtual string PaymentMethodText         {             get { return this.paymentMethodText; }             set { this.paymentMethodText = value; }         }

        [BrowsableAttribute(true)]         [DescriptionAttribute("获取或设置信用卡卡号")]         [DefaultValueAttribute("信用卡卡号")]         [CategoryAttribute("Appearance")]         public virtual string CreditCardNoText         {             get { return this.creditCardNoText; }             set { this.creditCardNoText = value; }         }

        [BrowsableAttribute(true)]         [DescriptionAttribute("获取或设置信用卡持有者姓名")]         [DefaultValueAttribute("信用卡持有者姓名")]         [CategoryAttribute("Appearance")]         public virtual string CardholderNameText         {             get { return this.cardholderNameText; }             set { this.cardholderNameText = value; }         }

        [BrowsableAttribute(true)]         [DescriptionAttribute("获取或设置最后使用时间")]         [DefaultValueAttribute("最后使用时间")]         [CategoryAttribute("Appearance")]         public virtual string ExpirationDateText         {             get { return this.expirationDateText; }             set { this.expirationDateText = value; }         }

        [BrowsableAttribute(true)]         [DescriptionAttribute("获取或设置按钮标签")]         [DefaultValueAttribute("提交")]         [CategoryAttribute("Appearance")]         public virtual string SubmitButtonText         {             get { return this.submitButtonText; }             set { this.submitButtonText = value; }         }

        protected override void 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);         }     } }

 

转载于:https://www.cnblogs.com/huqizhong/archive/2009/03/29/1424209.html


最新回复(0)