高级控件(集成验证功能的TextBox)

来源:互联网 发布:java扑克牌随机发牌 编辑:程序博客网 时间:2024/05/22 17:22

<textarea class="c-sharp" rows="15" cols="50" name="code">using System;using System.Collections;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.HtmlControls;using System.ComponentModel;using System.Text.RegularExpressions;// Shantou ZuoSheng Software Co., Ltd. Controls Class // By Programmer Zqhenamespace ZS.Control{ /// &lt;summary&gt; /// 文本框控件 /// &lt;/summary&gt; [DefaultProperty(&quot;Text&quot;), ToolboxData(&quot;&lt;{0}:TextBox runat=server&gt;&lt;/{0}:TextBox&gt;&quot;), Designer(&quot;System.Web.UI.Design.WebControls.PreviewControlDesigner, System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a&quot;)] public class TextBox : System.Web.UI.WebControls.TextBox, IWebControl { /// &lt;summary&gt; /// RequiredFieldValidator控件变量 /// &lt;/summary&gt; protected System.Web.UI.WebControls.RequiredFieldValidator CanBeNullRFV = new RequiredFieldValidator(); /// &lt;summary&gt; /// RegularExpressionValidator控件变量 /// &lt;/summary&gt; protected System.Web.UI.WebControls.RegularExpressionValidator RequiredFieldTypeREV = new RegularExpressionValidator(); /// &lt;summary&gt; /// RangeValidator控件变量 /// &lt;/summary&gt; protected System.Web.UI.WebControls.RangeValidator NumberRV = new System.Web.UI.WebControls.RangeValidator(); /// &lt;summary&gt; /// 构造函数 /// &lt;/summary&gt; public TextBox(): base() { base.Attributes.Add(&quot;onfocus&quot;, &quot;this.className='FormFocus';&quot;); base.Attributes.Add(&quot;onblur&quot;, &quot;this.className='FormBase';&quot;); base.CssClass = &quot;FormBase&quot;; //base.BorderStyle = BorderStyle.Dotted; //base.BorderWidth = 1; } /// &lt;summary&gt; /// 添加属性方法 /// &lt;/summary&gt; /// &lt;param name=&quot;key&quot;&gt;键值,如class等&lt;/param&gt; /// &lt;param name=&quot;valuestr&quot;&gt;要绑定的字符串&lt;/param&gt; public void AddAttributes(string key, string valuestr) { this.Attributes.Add(key, valuestr); } /// &lt;summary&gt; /// 创建子控件 /// &lt;/summary&gt; protected override void CreateChildControls() { //当指定了输入框的最小或最大值时,则加入校验范围项 if (this.MaximumValue != null || this.MinimumValue != null) { NumberRV.ControlToValidate = this.ID; NumberRV.Type = ValidationDataType.Double; NumberRV.ValidationGroup = this.ValidationGroup; if (this.MaximumValue != null &amp;&amp; this.MinimumValue != null) { NumberRV.MaximumValue = this.MaximumValue; NumberRV.MinimumValue = this.MinimumValue; NumberRV.ErrorMessage = &quot;当前输入数据应在&quot; + this.MinimumValue + &quot;和&quot; + this.MaximumValue + &quot;之间!&quot;; } else { if (this.MaximumValue != null) { NumberRV.MaximumValue = this.MaximumValue; NumberRV.MinimumValue = Int32.MinValue.ToString(); NumberRV.ErrorMessage = &quot;当前输入数据允许最大值为&quot; + this.MaximumValue; } if (this.MinimumValue != null) { NumberRV.MinimumValue = this.MinimumValue; NumberRV.MaximumValue = Int32.MaxValue.ToString(); NumberRV.ErrorMessage = &quot;当前输入数据允许最小值为&quot; + this.MinimumValue; } } NumberRV.Display = ValidatorDisplay.Static; this.Controls.AddAt(0, NumberRV); } if ((RequiredFieldType != null) &amp;&amp; (RequiredFieldType != &quot;&quot;) &amp;&amp; (RequiredFieldType != &quot;暂无校验&quot;)) { RequiredFieldTypeREV.Display = System.Web.UI.WebControls.ValidatorDisplay.Dynamic; RequiredFieldTypeREV.ControlToValidate = this.ID; RequiredFieldTypeREV.ValidationGroup = this.ValidationGroup; switch (RequiredFieldType) { case &quot;数据校验&quot;: { RequiredFieldTypeREV.ValidationExpression = (this.ValidationExpression != null) ? this.ValidationExpression : &quot;^[-]?//d+[.]?//d*$&quot;; RequiredFieldTypeREV.ErrorMessage = &quot;数字的格式不正确&quot;; break; } case &quot;邮政编号&quot;: { RequiredFieldTypeREV.ValidationExpression = (this.ValidationExpression != null) ? this.ValidationExpression : &quot;^[1-9]//d{5}$&quot;; RequiredFieldTypeREV.ErrorMessage = &quot;邮政编号格式不正确&quot;; break; } case &quot;电子邮箱&quot;: { RequiredFieldTypeREV.ValidationExpression = (this.ValidationExpression != null) ? this.ValidationExpression : (@&quot;^([/w-/.]+)@((/[[0-9]{1,3}/.[0-9]{1,3}/.[0-9]{1,3}/.)|(([/w-]+/.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(/]?)$&quot;); RequiredFieldTypeREV.ErrorMessage = &quot;邮箱的格式不正确&quot;; break; } case &quot;移动手机&quot;: { RequiredFieldTypeREV.ValidationExpression = (this.ValidationExpression != null) ? this.ValidationExpression : &quot;//d{11}&quot;; RequiredFieldTypeREV.ErrorMessage = &quot;手机的位数应为11位!&quot;; break; } case &quot;家用电话&quot;: { RequiredFieldTypeREV.ValidationExpression = (this.ValidationExpression != null) ? this.ValidationExpression : &quot;((//(//d{3}//) ?)|(//d{3}-))?//d{3}-//d{4}|((//(//d{3}//) ?)|(//d{4}-))?//d{4}-//d{4}&quot;; RequiredFieldTypeREV.ErrorMessage = &quot;请依 (XXX)XXX-XXXX 格式或 (XXX)XXXX-XXXX 输入电话号码!&quot;; break; } case &quot;身份证号码&quot;: { RequiredFieldTypeREV.ValidationExpression = (this.ValidationExpression != null) ? this.ValidationExpression : &quot;^//d{15}$|^//d{18}$&quot;; RequiredFieldTypeREV.ErrorMessage = &quot;请依15或18位数据的身份证号!&quot;; break; } case &quot;网页地址&quot;: { RequiredFieldTypeREV.ValidationExpression = (this.ValidationExpression != null) ? this.ValidationExpression : @&quot;^(http|https)/://([a-zA-Z0-9/./-]+(/:[a-zA-Z0-9/.&amp;%/$/-]+)*@)*((25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])/.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)/.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)/.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])|localhost|([a-zA-Z0-9/-]+/.)*[a-zA-Z0-9/-]+/.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{1,10}))(/:[0-9]+)*(/($|[a-zA-Z0-9/./,/?/'///+&amp;%/$#/=~_/-]+))*$&quot;; RequiredFieldTypeREV.ErrorMessage = &quot;请输入正确的网址&quot;; break; } case &quot;日期&quot;: { RequiredFieldTypeREV.ValidationExpression = (this.ValidationExpression != null) ? this.ValidationExpression : @&quot;^((((1[6-9]|[2-9]/d)/d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]/d|3[01]))|(((1[6-9]|[2-9]/d)/d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]/d|30))|(((1[6-9]|[2-9]/d)/d{2})-0?2-(0?[1-9]|1/d|2[0-8]))|(((1[6-9]|[2-9]/d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-))$&quot;; RequiredFieldTypeREV.ErrorMessage = &quot;请输入正确的日期,如:2006-1-1&quot;; break; } case &quot;日期时间&quot;: { RequiredFieldTypeREV.ValidationExpression = (this.ValidationExpression != null) ? this.ValidationExpression : @&quot;^((((1[6-9]|[2-9]/d)/d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]/d|3[01]))|(((1[6-9]|[2-9]/d)/d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]/d|30))|(((1[6-9]|[2-9]/d)/d{2})-0?2-(0?[1-9]|1/d|2[0-8]))|(((1[6-9]|[2-9]/d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-)) (20|21|22|23|[0-1]?/d):[0-5]?/d:[0-5]?/d$&quot;; RequiredFieldTypeREV.ErrorMessage = &quot;请输入正确的日期,如: 2006-1-1 23:59:59&quot;; break; } case &quot;金额&quot;: { RequiredFieldTypeREV.ValidationExpression = (this.ValidationExpression != null) ? this.ValidationExpression : &quot;^([0-9]|[0-9].[0-9]{0-2}|[1-9][0-9]*.[0-9]{0,4})$&quot;; RequiredFieldTypeREV.ErrorMessage = &quot;请输入正确的金额&quot;; break; } case &quot;IP地址&quot;: { RequiredFieldTypeREV.ValidationExpression = (this.ValidationExpression != null) ? this.ValidationExpression : @&quot;^(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])/.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)/.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)/.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])$&quot;; RequiredFieldTypeREV.ErrorMessage = &quot;请输入正确的IP地址&quot;; break; } case &quot;IP地址带端口&quot;: { RequiredFieldTypeREV.ValidationExpression = (this.ValidationExpression != null) ? this.ValidationExpression : @&quot;^(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])/.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)/.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)/.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9]):/d{1,5}?$&quot;; RequiredFieldTypeREV.ErrorMessage = &quot;请输入正确的带端口的IP地址&quot;; break; } } this.Controls.AddAt(0, RequiredFieldTypeREV); } switch (CanBeNull) { case &quot;可为空&quot;: { break; } case &quot;必填&quot;: { CanBeNullRFV.Display = System.Web.UI.WebControls.ValidatorDisplay.Dynamic; CanBeNullRFV.ControlToValidate = this.ID; CanBeNullRFV.ValidationGroup = this.ValidationGroup; CanBeNullRFV.ErrorMessage = &quot;&nbsp;&lt;span class='gray'&gt;请填写!&lt;/span&gt;&quot;; this.Controls.AddAt(0, CanBeNullRFV); break; } default: { break; } } } /// &lt;summary&gt; /// 获取焦点的控件ID(如提交按钮等) /// &lt;/summary&gt; [Bindable(true), Category(&quot;Appearance&quot;), DefaultValue(&quot;&quot;)] public string SetFocusButtonID { get { object o = ViewState[this.ClientID + &quot;_SetFocusButtonID&quot;]; return (o == null) ? &quot;&quot; : o.ToString(); } set { ViewState[this.ClientID + &quot;_SetFocusButtonID&quot;] = value; if (value != &quot;&quot;) { this.Attributes.Add(&quot;onkeydown&quot;, &quot;if(event.keyCode==13){document.getElementById('&quot; + value + &quot;').focus();}&quot;); } } } /// &lt;summary&gt; /// 控件的最大长度属性 /// &lt;/summary&gt; [Bindable(true), Category(&quot;Appearance&quot;), DefaultValue(&quot;&quot;)] public override int MaxLength { get { object o = ViewState[&quot;TextBox_MaxLength&quot;]; if (o != null) { int maxlength = StrToInt(o.ToString(), 4); AddAttributes(&quot;maxlength&quot;, maxlength.ToString()); return maxlength; } else { return -1; } } set { ViewState[&quot;TextBox_MaxLength&quot;] = value; AddAttributes(&quot;maxlength&quot;, value.ToString()); } } private int StrToInt(object Expression, int defValue) { if (Expression != null) { string str = Expression.ToString(); if (str.Length &gt; 0 &amp;&amp; str.Length &lt;= 11 &amp;&amp; Regex.IsMatch(str, @&quot;^[-]?[0-9]*$&quot;)) { if ((str.Length &lt; 10) || (str.Length == 10 &amp;&amp; str[0] == '1') || (str.Length == 11 &amp;&amp; str[0] == '-' &amp;&amp; str[1] == '1')) { return Convert.ToInt32(str); } } } return defValue; } /// &lt;summary&gt; /// 控件的TextMode属性 /// &lt;/summary&gt; [Bindable(false), Category(&quot;Behavior&quot;), DefaultValue(TextBoxMode.SingleLine), Description(&quot;要滚动的对象。&quot;)] public override TextBoxMode TextMode { get { return base.TextMode; } set { if (value == TextBoxMode.MultiLine) { base.Attributes.Add(&quot;onkeyup&quot;, &quot;return isMaxLen(this)&quot;); } base.TextMode = value; } } /// &lt;summary&gt; /// 要进行校验的表达式 /// &lt;/summary&gt; [Bindable(false), Category(&quot;Behavior&quot;), DefaultValue(&quot;&quot;), TypeConverter(typeof(RequiredFieldTypeControlsConverter)), Description(&quot;要滚动的对象。&quot;)] public string RequiredFieldType { get { object o = ViewState[&quot;RequiredFieldType&quot;]; return (o == null) ? &quot;&quot; : o.ToString(); } set { ViewState[&quot;RequiredFieldType&quot;] = value; } } /// &lt;summary&gt; /// 要表达式是否可以为空 /// &lt;/summary&gt; [Bindable(false), Category(&quot;Behavior&quot;), DefaultValue(&quot;可为空&quot;), TypeConverter(typeof(CanBeNullControlsConverter)), Description(&quot;要滚动的对象。&quot;)] public string CanBeNull { get { object o = ViewState[&quot;CanBeNull&quot;]; return (o == null) ? &quot;&quot; : o.ToString(); } set { ViewState[&quot;CanBeNull&quot;] = value; } } /// &lt;summary&gt; /// 是否进行 ' 号替换 /// &lt;/summary&gt; [Bindable(true), Category(&quot;Appearance&quot;), DefaultValue(&quot;&quot;)] public bool IsReplaceInvertedComma { get { object o = ViewState[&quot;IsReplaceInvertedComma&quot;]; if (o == null || o.ToString().Trim() == &quot;&quot;) { return true; } else { return o.ToString().ToLower() == &quot;true&quot; ? true : false; } } set { ViewState[&quot;IsReplaceInvertedComma&quot;] = value; } } /// &lt;summary&gt; /// 有效校验表达式 /// &lt;/summary&gt; [Bindable(true), Category(&quot;Appearance&quot;), DefaultValue(&quot;&quot;)] public string ValidationExpression { get { object o = ViewState[&quot;ValidationExpression&quot;]; if (o == null || o.ToString().Trim() == &quot;&quot;) { return null; } else { return o.ToString().ToLower(); } } set { ViewState[&quot;ValidationExpression&quot;] = value; } } /// &lt;summary&gt; /// 文本内容属性 /// &lt;/summary&gt; [Bindable(true), Category(&quot;Appearance&quot;), DefaultValue(&quot;&quot;)] public override string Text { get { //进行强制日期格式的转换 if (this.RequiredFieldType == &quot;日期&quot;) { try { return DateTime.Parse(base.Text).ToString(&quot;yyyy-MM-dd&quot;); } catch { return &quot;1900-1-1&quot;; } } //进行强制日期时间格式的转换 if (this.RequiredFieldType == &quot;日期时间&quot;) { try { return DateTime.Parse(base.Text).ToString(&quot;yyyy-MM-dd HH:mm:ss&quot;); } catch { return &quot;1900-1-1 00:00:00&quot;; } } else { return IsReplaceInvertedComma ? base.Text.Replace(&quot;'&quot;, &quot;''&quot;).Trim() : base.Text; } } set { //进行强制日期格式的转换 if (this.RequiredFieldType.IndexOf(&quot;日期&quot;) &gt;= 0) { try { base.Text = DateTime.Parse(value).ToString(&quot;yyyy-MM-dd&quot;); } catch { base.Text = &quot;&quot;; } } //进行强制日期时间格式的转换 if (this.RequiredFieldType.IndexOf(&quot;日期时间&quot;) &gt;= 0) { try { base.Text = DateTime.Parse(value).ToString(&quot;yyyy-MM-dd HH:mm:ss&quot;); } catch { base.Text = &quot;&quot;; } } else { base.Text = value; } } } /// &lt;summary&gt; /// 列数属性 /// &lt;/summary&gt; [Bindable(true), Category(&quot;Appearance&quot;), DefaultValue(30)] public int Cols { get { return base.Columns; } set { base.Columns = value; } } private int _size = 30; /// &lt;summary&gt; /// 宽度属性 /// &lt;/summary&gt; [Bindable(true), Category(&quot;Appearance&quot;), DefaultValue(30)] public int Size { get { return _size; } set { _size = value; } } private string _maximumValue = null; /// &lt;summary&gt; /// 最小值属性 /// &lt;/summary&gt; [Bindable(true), Category(&quot;Appearance&quot;), DefaultValue(null)] public string MaximumValue { get { return _maximumValue; } set { _maximumValue = value; } } private string _minimumValue = null; /// &lt;summary&gt; /// 最大值属性 /// &lt;/summary&gt; [Bindable(true), Category(&quot;Appearance&quot;), DefaultValue(null)] public string MinimumValue { get { return _minimumValue; } set { _minimumValue = value; } } private string _hintTitle = &quot;&quot;; /// &lt;summary&gt; /// 提示框标题 /// &lt;/summary&gt; [Bindable(true), Category(&quot;Appearance&quot;), DefaultValue(&quot;&quot;)] public string HintTitle { get { return _hintTitle; } set { _hintTitle = value; } } private string _hintInfo = &quot;&quot;; /// &lt;summary&gt; /// 提示框内容 /// &lt;/summary&gt; [Bindable(true), Category(&quot;Appearance&quot;), DefaultValue(&quot;&quot;)] public string HintInfo { get { return _hintInfo; } set { _hintInfo = value; } } private int _hintLeftOffSet = 0; /// &lt;summary&gt; /// 提示框左侧偏移量 /// &lt;/summary&gt; [Bindable(true), Category(&quot;Appearance&quot;), DefaultValue(0)] public int HintLeftOffSet { get { return _hintLeftOffSet; } set { _hintLeftOffSet = value; } } private int _hintTopOffSet = 0; /// &lt;summary&gt; /// 提示框顶部偏移量 /// &lt;/summary&gt; [Bindable(true), Category(&quot;Appearance&quot;), DefaultValue(0)] public int HintTopOffSet { get { return _hintTopOffSet; } set { _hintTopOffSet = value; } } private string _hintShowType = &quot;up&quot;;//或&quot;down&quot; /// &lt;summary&gt; /// 提示框风格,up(上方显示)或down(下方显示) /// &lt;/summary&gt; [Bindable(true), Category(&quot;Appearance&quot;), DefaultValue(&quot;up&quot;)] public string HintShowType { get { return _hintShowType; } set { _hintShowType = value; } } private int _hintHeight = 50; /// &lt;summary&gt; /// 提示框高度 /// &lt;/summary&gt; [Bindable(true), Category(&quot;Appearance&quot;), DefaultValue(130)] public int HintHeight { get { return _hintHeight; } set { _hintHeight = value; } } /// &lt;summary&gt; /// 输出html,在浏览器中显示控件 /// &lt;/summary&gt; /// &lt;param name=&quot;output&quot;&gt; 要写出到的 HTML 编写器 &lt;/param&gt; protected override void Render(HtmlTextWriter output) { //当为TextArea时,maxlength属性可能失效,所以采用js进行长度限制 if (this.TextMode == TextBoxMode.MultiLine) { output.WriteLine(&quot;&lt;mce:script type=/&quot;text/javascript/&quot;&gt;&lt;!--&quot;); output.WriteLine(&quot;function isMaxLen(o){&quot;); output.WriteLine(&quot;var nMaxLen=o.getAttribute? parseInt(o.getAttribute(/&quot;maxlength/&quot;)):/&quot;/&quot;;&quot;); output.WriteLine(&quot; if(o.getAttribute &amp;&amp; o.value.length&gt;nMaxLen){&quot;); output.WriteLine(&quot; o.value=o.value.substring(0,nMaxLen)&quot;); output.WriteLine(&quot;}}// --&gt;&lt;/mce:script&gt;&quot;); this.AddAttributes(&quot;rows&quot;, Rows.ToString()); this.AddAttributes(&quot;cols&quot;, Cols.ToString()); } else { if (this.Size &gt; 0) { this.AddAttributes(&quot;size&quot;, this.Size.ToString()); } } if (this.HintInfo != &quot;&quot;) { this.AddAttributes(&quot;onmouseover&quot;, &quot;showhintinfo(this,&quot; + this.HintLeftOffSet + &quot;,&quot; + this.HintTopOffSet + &quot;,'&quot; + this.HintTitle + &quot;','&quot; + this.HintInfo + &quot;','&quot; + this.HintHeight + &quot;','&quot; + this.HintShowType + &quot;')&quot;); this.AddAttributes(&quot;onmouseout&quot;, &quot;hidehintinfo()&quot;); } base.Render(output); RenderChildren(output); } } /// &lt;summary&gt; /// 下拉列表选项转换器 /// &lt;/summary&gt; public class RequiredFieldTypeControlsConverter : StringConverter { /// &lt;summary&gt; /// 构造函数 /// &lt;/summary&gt; public RequiredFieldTypeControlsConverter() { } /// &lt;summary&gt; /// 说明要用下拉列表编辑属性 /// &lt;/summary&gt; /// &lt;param name=&quot;context&quot;&gt;&lt;/param&gt; /// &lt;returns&gt;&lt;/returns&gt; public override bool GetStandardValuesSupported(ITypeDescriptorContext context) { return true; } /// &lt;summary&gt; /// 获取标准值列表 /// &lt;/summary&gt; /// &lt;param name=&quot;context&quot;&gt;&lt;/param&gt; /// &lt;returns&gt;&lt;/returns&gt; public override System.ComponentModel.TypeConverter.StandardValuesCollection GetStandardValues(ITypeDescriptorContext context) { ArrayList controlsArray = new ArrayList(); controlsArray.Add(&quot;暂无校验&quot;); controlsArray.Add(&quot;邮政编号&quot;); controlsArray.Add(&quot;数据校验&quot;); controlsArray.Add(&quot;电子邮箱&quot;); controlsArray.Add(&quot;移动手机&quot;); controlsArray.Add(&quot;家用电话&quot;); controlsArray.Add(&quot;身份证号码&quot;); controlsArray.Add(&quot;网页地址&quot;); controlsArray.Add(&quot;日期&quot;); controlsArray.Add(&quot;日期时间&quot;); controlsArray.Add(&quot;金额&quot;); controlsArray.Add(&quot;IP地址&quot;); controlsArray.Add(&quot;IP地址带端口&quot;); return new StandardValuesCollection(controlsArray); } /// &lt;summary&gt; /// return ture的话只能选,return flase可选可填 /// &lt;/summary&gt; /// &lt;param name=&quot;context&quot;&gt;&lt;/param&gt; /// &lt;returns&gt;&lt;/returns&gt; public override bool GetStandardValuesExclusive(ITypeDescriptorContext context) { return false; } } /// &lt;summary&gt; /// 下拉列表选项转换器 /// &lt;/summary&gt; public class CanBeNullControlsConverter : StringConverter { /// &lt;summary&gt; /// 构造函数 /// &lt;/summary&gt; public CanBeNullControlsConverter() { } /// &lt;summary&gt; /// 下拉列表编辑属性 /// &lt;/summary&gt; /// &lt;param name=&quot;context&quot;&gt;&lt;/param&gt; /// &lt;returns&gt;&lt;/returns&gt; public override bool GetStandardValuesSupported(ITypeDescriptorContext context) { return true; } /// &lt;summary&gt; /// 获取标准值列表 /// &lt;/summary&gt; /// &lt;param name=&quot;context&quot;&gt;&lt;/param&gt; /// &lt;returns&gt;&lt;/returns&gt; public override System.ComponentModel.TypeConverter.StandardValuesCollection GetStandardValues(ITypeDescriptorContext context) { ArrayList controlsArray = new ArrayList(); controlsArray.Add(&quot;可为空&quot;); controlsArray.Add(&quot;必填&quot;); return new StandardValuesCollection(controlsArray); } /// &lt;summary&gt; /// return ture的话只能选,return flase可选可填 /// &lt;/summary&gt; /// &lt;param name=&quot;context&quot;&gt;&lt;/param&gt; /// &lt;returns&gt;&lt;/returns&gt; public override bool GetStandardValuesExclusive(ITypeDescriptorContext context) { return false; } } /// &lt;summary&gt; /// 下拉列表选项转换器 /// &lt;/summary&gt; public class FormControlsConverter : StringConverter { /// &lt;summary&gt; /// 构造函数 /// &lt;/summary&gt; public FormControlsConverter() { } /// &lt;summary&gt; /// 下拉列表编辑属性 /// &lt;/summary&gt; /// &lt;param name=&quot;context&quot;&gt;&lt;/param&gt; /// &lt;returns&gt;&lt;/returns&gt; public override bool GetStandardValuesSupported(ITypeDescriptorContext context) { return true; } /// &lt;summary&gt; /// 获取标准值列表 /// &lt;/summary&gt; /// &lt;param name=&quot;context&quot;&gt;&lt;/param&gt; /// &lt;returns&gt;&lt;/returns&gt; public override System.ComponentModel.TypeConverter.StandardValuesCollection GetStandardValues(ITypeDescriptorContext context) { ControlCollection Controls = ((Page)context.Container.Components[0]).Controls; ArrayList controlsArray = new ArrayList(); for (int i = 0; i &lt; Controls.Count; i++) { if ((Controls[i] is HtmlTable || Controls[i] is HtmlForm || Controls[i] is HtmlGenericControl || Controls[i] is HtmlImage || Controls[i] is Label || Controls[i] is DataGrid || Controls[i] is DataList || Controls[i] is Table || Controls[i] is Repeater || Controls[i] is Image || Controls[i] is Panel || Controls[i] is PlaceHolder || Controls[i] is Calendar || Controls[i] is AdRotator || Controls[i] is Xml )) { controlsArray.Add(Controls[i].ClientID); } } return new StandardValuesCollection(controlsArray); } /// &lt;summary&gt; /// return ture的话只能选,return flase可选可填 /// &lt;/summary&gt; /// &lt;param name=&quot;context&quot;&gt;&lt;/param&gt; /// &lt;returns&gt;&lt;/returns&gt; public override bool GetStandardValuesExclusive(ITypeDescriptorContext context) { return false; } }}</textarea>

原创粉丝点击