一个能设置验证信息样式的WebTextBox基本验证复合控件
前些日子看见有人写了一个WebTextBox基本验证复合控件,感觉挺好用,唯一不足是不能方便地设置验证失败时显示的信息的样式。本人于是又对该复合控件进行了重写,对其添加了更多验证方式的选择,并能方便地对验证失败时显示的信息样式进行控制。
http://gyche.cnblogs.com/ 前些日子看见有人写了一个WebTextBox基本验证复合控件,感觉挺好用,唯一不足是不能方便地设置验证失败时显示的信息的样式。本人于是又对该复合控件进行了重写,对其添加了更多验证方式的选择,并能方便地对验证失败时显示的信息样式进行控制。以下是源代码:
1
using System;
2
using System.Collections.Generic;
3
using System.ComponentModel;
4
using System.Text;
5
using System.Web;
6
using System.Web.UI;
7
using System.Web.UI.WebControls;
8
using System.Drawing;
9
using System.Drawing.Design;
10![](/Images/OutliningIndicators/None.gif)
11
namespace GuoyongChe.WebCtrlLib
12![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](/Images/OutliningIndicators/ContractedBlock.gif)
{
13![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//// <summary>
14
/// 重写的TextBox控件
15
/// Author: GuoyongChe
16
/// Date: 2007-12-22
17
/// Email: Guoyong.Che@Gmail.com
18
/// QQ: 19892257
19
/// <summary>
20
///
21![](/Images/OutliningIndicators/ContractedSubBlock.gif)
枚举数据#region 枚举数据
22![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//// <summary>
23
/// 验证数据类型
24
/// </summary>
25
public enum DataType
26![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
27
Never, //不验证
28
String, //字符串
29
Int, //整数
30
IntPostive, //大于0的整数
31
IntZeroPostive, //大于等于0的整数
32
Float, //数字
33
FloatPostive, //大于0的数字
34
FloatZeroPostive, //大于等于0的数字
35
Url,
36
Mail,
37
Date, //日期
38
ChineseChars, //汉字字符串
39
EnglishChars, //英文
40
EngNum, //英文和数字
41
EngNumUnerline, //英文、数字和下划线
42
PhoneNumber, //电话号码
43
MobileNumber, //手机号码
44
PostalCode, //邮政编码
45
QQ, //QQ号码
46
IdentityCode, //身份证号码
47
IP, //IP地址
48
Custom
49
}
50
#endregion
51![](/Images/OutliningIndicators/InBlock.gif)
52![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//// Attribute DefaultProperty指定组件的默认属性,ToolboxData指定当从IDE工具中的工具箱中拖动自定义控件时为它生成的默认标记
53
[DefaultProperty("AllowEmpty"), ToolboxData("<{0}:WebTextBox runat=server></{0}:WebTextBox>")]
54![](/Images/OutliningIndicators/InBlock.gif)
55
//类MyControl派生自WebControl
56
public class WebTextBox : System.Web.UI.WebControls.TextBox
57![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
58![](/Images/OutliningIndicators/ContractedSubBlock.gif)
子控件#region 子控件
59
//private System.Web.UI.WebControls.TextBox txtDataInput = new TextBox();
60
private System.Web.UI.WebControls.RequiredFieldValidator rfvDataInput = new RequiredFieldValidator();
61
private System.Web.UI.WebControls.RegularExpressionValidator revDataInput = new RegularExpressionValidator();
62
private Panel pnlFrame = new Panel(); //承载其它控件的容器Panel控件
63
#endregion
64![](/Images/OutliningIndicators/InBlock.gif)
65
private string error = "";
66![](/Images/OutliningIndicators/InBlock.gif)
67![](/Images/OutliningIndicators/ContractedSubBlock.gif)
控件自定义属性#region 控件自定义属性
68![](/Images/OutliningIndicators/InBlock.gif)
69
[Bindable(true)]
70
[Category("自定义信息区")]
71
[Browsable(true)]
72
[Description("是否允许空值")]
73
[DefaultValue("true")]
74
public bool AllowEmpty
75![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
76![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
get
{ return ViewState["AllowEmpty"] == null ? true : (bool)ViewState["AllowEmpty"]; }
77![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
set
{ ViewState["AllowEmpty"] = value; }
78
}
79![](/Images/OutliningIndicators/InBlock.gif)
80
[Bindable(true)]
81
[Category("自定义信息区")]
82
[Browsable(true)]
83
[Description("验证数据类型,默认为不验证")]
84
[DefaultValue("IntPostive")]
85
public DataType ValidType
86![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
87![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
get
{ return ViewState["ValidType"] == null ? DataType.Never : (DataType)ViewState["ValidType"]; }
88![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
set
{ ViewState["ValidType"] = value; }
89
}
90![](/Images/OutliningIndicators/InBlock.gif)
91
[Bindable(true)]
92
[Browsable(true)]
93
[Category("自定义信息区")]
94
[Description("自定义验证错误信息")]
95
[DefaultValue("")]
96
public string ValidError
97![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
98![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
get
{ return ViewState["ValidError"] == null ? "" : (string)ViewState["ValidError"]; }
99![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
set
{ ViewState["ValidError"] = value; }
100
}
101![](/Images/OutliningIndicators/InBlock.gif)
102
[Bindable(true)]
103
[Browsable(true)]
104
[Category("自定义信息区")]
105
[Description("自定义用于验证的正则表达式,ValidType 为 Custom 时有效")]
106
[DefaultValue("")]
107
public string ValidExpressionCustom
108![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
109![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
get
{ return ViewState["ValidExpressionCustom"] == null ? "" : (string)ViewState["ValidExpressionCustom"]; }
110![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
set
{ ViewState["ValidExpressionCustom"] = value; }
111
}
112![](/Images/OutliningIndicators/InBlock.gif)
113
[Bindable(true)]
114
[Browsable(true)]
115
[Category("自定义信息区")]
116
[Description("错误信息提示的CSS类名")]
117
[DefaultValue("")]
118
public string CssError
119![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
120![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
get
{ return ViewState["CssError"] == null ? "" : (string)ViewState["CssError"]; }
121![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
set
{ ViewState["CssError"] = value; }
122
}
123![](/Images/OutliningIndicators/InBlock.gif)
124
[Bindable(true)]
125
[Browsable(true)]
126
[Category("自定义信息区")]
127
[Description("验证控件的前景色")]
128
[DefaultValue("")]
129
public Color ValidateForeColor
130![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
131
get
132![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
133
if (ViewState["ValidateForeColor"] == null)
134
return Color.Red;
135
return (Color)ViewState["ValidateForeColor"];
136
}
137![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
set
{ ViewState["ValidateForeColor"] = value; }
138
}
139![](/Images/OutliningIndicators/InBlock.gif)
140
[Bindable(true)]
141
[Browsable(true)]
142
[Category("自定义信息区")]
143
[Description("验证控件的背景色")]
144
[DefaultValue("")]
145
public Color ValidateBackColor
146![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
147
get
148![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
149
if (ViewState["ValidateBackColor"] == null)
150
return Color.Transparent;
151
return (Color)ViewState["ValidateBackColor"];
152
}
153![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
set
{ ViewState["ValidateBackColor"] = value; }
154
}
155![](/Images/OutliningIndicators/InBlock.gif)
156
[Category("自定义信息区")]
157
[DefaultValue(""), RefreshProperties(RefreshProperties.Repaint), Description("验证控件的字体大小"), NotifyParentProperty(true)]
158
public FontUnit ValidateFontSize
159![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
160
get
161![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
162![](/Images/OutliningIndicators/InBlock.gif)
163
if (ViewState["ValidateFontSize"] != null)
164
return (FontUnit)ViewState["ValidateFontSize"];
165
return FontUnit.Medium;
166
}
167![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
set
{ ViewState["ValidateFontSize"] = value; }
168
}
169![](/Images/OutliningIndicators/InBlock.gif)
170
[Category("自定义信息区")]
171
[DefaultValue("false"), RefreshProperties(RefreshProperties.Repaint), Description("验证控件的字体加粗"), NotifyParentProperty(true)]
172
public bool ValidateFontBold
173![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
174
get
175![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
176![](/Images/OutliningIndicators/InBlock.gif)
177
if (ViewState["ValidateFontBold"] != null)
178
return (bool)ViewState["ValidateFontBold"];
179
return false;
180
}
181![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
set
{ ViewState["ValidateFontBold"] = value; }
182
}
183![](/Images/OutliningIndicators/InBlock.gif)
184
[Category("自定义信息区")]
185
[DefaultValue("false"), RefreshProperties(RefreshProperties.Repaint), Description("验证控件的字体斜体"), NotifyParentProperty(true)]
186
public bool ValidateFontItalic
187![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
188
get
189![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
190![](/Images/OutliningIndicators/InBlock.gif)
191
if (ViewState["ValidateFontItalic"] != null)
192
return (bool)ViewState["ValidateFontItalic"];
193
return false;
194
}
195![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
set
{ ViewState["ValidateFontItalic"] = value; }
196
}
197![](/Images/OutliningIndicators/InBlock.gif)
198
[Category("自定义信息区")]
199
[DefaultValue("false"), RefreshProperties(RefreshProperties.Repaint), Description("验证控件的字体上划线"), NotifyParentProperty(true)]
200
public bool ValidateFontOverLine
201![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
202
get
203![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
204![](/Images/OutliningIndicators/InBlock.gif)
205
if (ViewState["ValidateFontOverLine"] != null)
206
return (bool)ViewState["ValidateFontOverLine"];
207
return false;
208
}
209![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
set
{ ViewState["ValidateFontOverLine"] = value; }
210
}
211![](/Images/OutliningIndicators/InBlock.gif)
212
[Category("自定义信息区")]
213
[DefaultValue("false"), RefreshProperties(RefreshProperties.Repaint), Description("验证控件的字体删除线"), NotifyParentProperty(true)]
214
public bool ValidateFontStrikeout
215![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
216
get
217![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
218![](/Images/OutliningIndicators/InBlock.gif)
219
if (ViewState["ValidateFontStrikeout"] != null)
220
return (bool)ViewState["ValidateFontStrikeout"];
221
return false;
222
}
223![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
set
{ ViewState["ValidateFontStrikeout"] = value; }
224
}
225
[Category("自定义信息区")]
226
[DefaultValue(""), RefreshProperties(RefreshProperties.Repaint), Description("验证控件的CSSClass属性"), NotifyParentProperty(true)]
227
public string ValidateCSSClass
228![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
229
get
230![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
231![](/Images/OutliningIndicators/InBlock.gif)
232
if (ViewState["ValidateCSSClass"] != null)
233
return ViewState["ValidateCSSClass"].ToString();
234
return string.Empty;
235
}
236![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
set
{ ViewState["ValidateCSSClass"] = value; }
237
}
238
[Category("自定义信息区")]
239
[DefaultValue("false"), RefreshProperties(RefreshProperties.Repaint), Description("验证控件的字体下划线"), NotifyParentProperty(true)]
240
public bool ValidateFontUnderline
241![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
242
get
243![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
244![](/Images/OutliningIndicators/InBlock.gif)
245
if (ViewState["ValidateFontUnderline"] != null)
246
return (bool)ViewState["ValidateFontUnderline"];
247
return false;
248
}
249![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
set
{ ViewState["ValidateFontUnderline"] = value; }
250
}
251
[Category("自定义信息区"), DefaultValue(""), Description("验证控件的字体名")]
252
[Editor("System.Drawing.Design.FontNameEditor, System.Drawing.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", typeof(UITypeEditor)), TypeConverter(typeof(FontConverter.FontNameConverter))]
253
public string ValidateFontName
254![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
255
get
256![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
257
if (ViewState["ValidateFontName"] != null)
258
return (string)ViewState["ValidateFontName"];
259
return string.Empty;
260
}
261
set
262![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
263
ViewState["ValidateFontName"] = value;
264
}
265
}
266![](/Images/OutliningIndicators/InBlock.gif)
267
#endregion
268![](/Images/OutliningIndicators/InBlock.gif)
269![](/Images/OutliningIndicators/ContractedSubBlock.gif)
构造函数#region 构造函数
270![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
public WebTextBox()
{ }
271
#endregion
272![](/Images/OutliningIndicators/InBlock.gif)
273![](/Images/OutliningIndicators/ContractedSubBlock.gif)
EnsureChildControls#region EnsureChildControls
274
protected override void EnsureChildControls()
275![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
276
this.rfvDataInput.CssClass = this.CssError;
277
this.rfvDataInput.ErrorMessage = "*输入不能为空";
278
this.rfvDataInput.Display = System.Web.UI.WebControls.ValidatorDisplay.Dynamic;
279
this.rfvDataInput.EnableViewState = true;
280
this.rfvDataInput.ControlToValidate = base.ID;
281
this.rfvDataInput.ForeColor = ValidateForeColor;
282![](/Images/OutliningIndicators/InBlock.gif)
283
this.rfvDataInput.BackColor = ValidateBackColor;
284
if (ValidateFontSize != null)
285![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
286
this.rfvDataInput.Font.Size = ValidateFontSize;
287
}
288
this.rfvDataInput.Font.Bold = ValidateFontBold;
289
this.rfvDataInput.Font.Italic = ValidateFontItalic;
290
this.rfvDataInput.Font.Strikeout = ValidateFontStrikeout;
291
this.rfvDataInput.Font.Overline = ValidateFontOverLine;
292
this.rfvDataInput.Font.Underline = ValidateFontUnderline;
293
if (!string.IsNullOrEmpty(ValidateFontName))
294
this.rfvDataInput.Font.Name = ValidateFontName;
295
if(!string.IsNullOrEmpty(ValidateCSSClass))
296
this.rfvDataInput.CssClass=ValidateCSSClass;
297![](/Images/OutliningIndicators/InBlock.gif)
298
this.revDataInput.CssClass = this.CssError;
299
this.revDataInput.ErrorMessage = "*输入格式错误";
300
this.revDataInput.Display = System.Web.UI.WebControls.ValidatorDisplay.Dynamic;
301
this.revDataInput.EnableViewState = true;
302
this.revDataInput.ControlToValidate = base.ID;
303
this.revDataInput.ForeColor = ValidateForeColor;
304![](/Images/OutliningIndicators/InBlock.gif)
305
this.revDataInput.BackColor = ValidateBackColor;
306
if (ValidateFontSize != null)
307![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
308
this.revDataInput.Font.Size = ValidateFontSize;
309
}
310
this.revDataInput.Font.Bold = ValidateFontBold;
311
this.revDataInput.Font.Bold = ValidateFontBold;
312
this.revDataInput.Font.Italic = ValidateFontItalic;
313
this.revDataInput.Font.Strikeout = ValidateFontStrikeout;
314
this.revDataInput.Font.Overline = ValidateFontOverLine;
315
this.revDataInput.Font.Underline = ValidateFontUnderline;
316
if (!string.IsNullOrEmpty(ValidateFontName))
317
this.revDataInput.Font.Name = ValidateFontName;
318
if (!string.IsNullOrEmpty(ValidateCSSClass))
319
this.revDataInput.CssClass = ValidateCSSClass;
320![](/Images/OutliningIndicators/InBlock.gif)
321
//将子控件添加到此自定义控件中
322
this.Controls.Add(rfvDataInput);
323
this.Controls.Add(revDataInput);
324
this.Controls.Add(pnlFrame);
325
}
326
#endregion
327![](/Images/OutliningIndicators/InBlock.gif)
328![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//// <summary>
329
/// 根据设置的验证数据类型返回不同的正则表达式样
330
/// </summary>
331
/// <returns></returns>
332![](/Images/OutliningIndicators/ContractedSubBlock.gif)
GetRegex#region GetRegex
333
private string GetValidRegex()
334![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
335
string regex = @"(\S)";
336
switch (this.ValidType)
337![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
338
case DataType.Never:
339
break;
340
case DataType.Int:
341
error = "*必须为整数";
342
regex = @"(-)?(\d+)";
343
break;
344
case DataType.IntPostive:
345
error = "*必须为大于0的整数";
346
regex = @"([1-9]{1}\d*)";
347
break;
348
case DataType.IntZeroPostive:
349
error = "*必须为不小于0的整数";
350
regex = @"(\d+)";
351
break;
352
case DataType.Float:
353
error = "*必须为数字";
354
regex = @"(-)?(\d+)(((\.)(\d)+))?";
355
break;
356
case DataType.FloatPostive:
357
error = "*必须为大于0的数字";
358
regex = @"(\d+)(((\.)(\d)+))?";
359
break;
360
case DataType.FloatZeroPostive:
361
error = "*必须为不小于0的数字";
362
regex = @"(\d+)(((\.)(\d)+))?";
363
break;
364
case DataType.Url:
365
error = "*URL格式错误";
366
regex = @"(http://)?([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?";
367
break;
368
case DataType.Mail:
369
error = "*EMail格式错误";
370
regex = @"\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*";
371
break;
372
case DataType.ChineseChars :
373
error = "*只能输入中文字符";
374
regex = @"[\u4e00-\u9fa5]*";
375
break;
376
case DataType.EnglishChars:
377
error = "*只能输入英文字符";
378
regex = @"[a-zA-Z]*";
379
break;
380
case DataType.EngNum:
381
error = "*只能输入英文字符和数字";
382
regex = @"[a-zA-Z0-9]*";
383
break;
384
case DataType.EngNumUnerline:
385
error = "*只能输入英文字符、数字和下划线";
386
regex = @"[a-zA-Z0-9_]*";
387
break;
388
case DataType.PhoneNumber:
389
error = "*电话号码格式错误";
390
regex = @"(86)?(-)?(0\d{2,3})?(-)?(\d{7,8})(-)?(\d{1,5})?";
391
break;
392
case DataType.MobileNumber:
393
error = "*手机号码格式错误";
394
regex = @"(0)?(1)\d{10}";
395
break;
396
case DataType.PostalCode:
397
error = "*邮编格式错误";
398
regex = @"\d{6}";
399
break;
400
case DataType.Date:
401
error = "*日期格式错误(YYYY-MM-DD)";
402
regex = @"^(((((0[48]00)|(0[1-9]((0[48])|([2468][048])|([13579][26]))))-02-29)|((0[1-9][0-9][0-9])-((((0[13578])|(1[02]))-31)|(((0[1,3-9])|(1[0-2]))-(29|30))|(((0[1-9])|(1[0-2]))-((0[1-9])|(1[0-9])|(2[0-8])))))))|((((((([13579][26])|([2468][048]))00)|([1-9][0-9]((0[48])|([13579][26])|([2468][048]))))-02-29)|(([1-9][0-9][0-9][0-9])-((((0[13578])|(1[02]))-31)|(((0[1,3-9])|(1[0-2]))-(29|30))|(((0[1-9])|(1[0-2]))-((0[1-9])|(1[0-9])|(2[0-8])))))))|((((00((0[48])|([2468][048])|([13579][26])))-02-29)|((00((0[1-9])|([1-9][0-9])))-((((0[13578])|(1[02]))-31)|(((0[1,3-9])|(1[0-2]))-(29|30))|(((0[1-9])|(1[0-2]))-((0[1-9])|(1[0-9])|(2[0-8])))))))$";
403
break;
404
case DataType.IdentityCode:
405
error = "*身份证号码格式错误";
406
regex = @"\d{18}";
407
break;
408
case DataType.QQ:
409
error = "*QQ号码格式错误";
410
regex = @"[1-9][0-9]{4,}";
411
break;
412
case DataType.IP:
413
error = "*IP地址格式错误";
414
regex = @"\d+\.\d+\.\d+\.\d+";
415
break;
416
case DataType.Custom:
417
error = "*格式错误";
418
regex = this.ValidExpressionCustom;
419
break;
420
default:
421
break;
422
}
423
if (this.ValidError.Trim() != "")
424
error = this.ValidError;
425
return regex;
426
}
427
#endregion
428![](/Images/OutliningIndicators/InBlock.gif)
429![](/Images/OutliningIndicators/ContractedSubBlock.gif)
将此控件呈现给指定的输出参数#region 将此控件呈现给指定的输出参数
430![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//// <summary>
431
/// 将此控件呈现给指定的输出参数。
432
/// </summary>
433
/// <param name="output"> 要写出到的 HTML 编写器 </param>
434
protected override void Render(HtmlTextWriter output)
435![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
436
base.Render(output);
437
output.Write(" ");
438![](/Images/OutliningIndicators/InBlock.gif)
439
if (!this.AllowEmpty)
440![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
441
this.rfvDataInput.ID = "rfv" + base.ID;
442
this.rfvDataInput.ControlToValidate = base.ID;
443
this.rfvDataInput.RenderControl(output);
444
}
445![](/Images/OutliningIndicators/InBlock.gif)
446
if (this.ValidType != DataType.Never && this.ValidType != DataType.String)
447![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
448
this.revDataInput.ID = "rev" + base.ID;
449
this.revDataInput.ControlToValidate = base.ID;
450
this.revDataInput.ValidationExpression = this.GetValidRegex();
451
this.revDataInput.ErrorMessage = error;
452
this.revDataInput.RenderControl(output);
453
}
454
}
455
#endregion
456![](/Images/OutliningIndicators/InBlock.gif)
457
}
458
}
459![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
2
![](/Images/OutliningIndicators/None.gif)
3
![](/Images/OutliningIndicators/None.gif)
4
![](/Images/OutliningIndicators/None.gif)
5
![](/Images/OutliningIndicators/None.gif)
6
![](/Images/OutliningIndicators/None.gif)
7
![](/Images/OutliningIndicators/None.gif)
8
![](/Images/OutliningIndicators/None.gif)
9
![](/Images/OutliningIndicators/None.gif)
10
![](/Images/OutliningIndicators/None.gif)
11
![](/Images/OutliningIndicators/None.gif)
12
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](/Images/OutliningIndicators/ContractedBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
13
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
14
![](/Images/OutliningIndicators/InBlock.gif)
15
![](/Images/OutliningIndicators/InBlock.gif)
16
![](/Images/OutliningIndicators/InBlock.gif)
17
![](/Images/OutliningIndicators/InBlock.gif)
18
![](/Images/OutliningIndicators/InBlock.gif)
19
![](/Images/OutliningIndicators/InBlock.gif)
20
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
21
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
22
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
23
![](/Images/OutliningIndicators/InBlock.gif)
24
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
25
![](/Images/OutliningIndicators/InBlock.gif)
26
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
27
![](/Images/OutliningIndicators/InBlock.gif)
28
![](/Images/OutliningIndicators/InBlock.gif)
29
![](/Images/OutliningIndicators/InBlock.gif)
30
![](/Images/OutliningIndicators/InBlock.gif)
31
![](/Images/OutliningIndicators/InBlock.gif)
32
![](/Images/OutliningIndicators/InBlock.gif)
33
![](/Images/OutliningIndicators/InBlock.gif)
34
![](/Images/OutliningIndicators/InBlock.gif)
35
![](/Images/OutliningIndicators/InBlock.gif)
36
![](/Images/OutliningIndicators/InBlock.gif)
37
![](/Images/OutliningIndicators/InBlock.gif)
38
![](/Images/OutliningIndicators/InBlock.gif)
39
![](/Images/OutliningIndicators/InBlock.gif)
40
![](/Images/OutliningIndicators/InBlock.gif)
41
![](/Images/OutliningIndicators/InBlock.gif)
42
![](/Images/OutliningIndicators/InBlock.gif)
43
![](/Images/OutliningIndicators/InBlock.gif)
44
![](/Images/OutliningIndicators/InBlock.gif)
45
![](/Images/OutliningIndicators/InBlock.gif)
46
![](/Images/OutliningIndicators/InBlock.gif)
47
![](/Images/OutliningIndicators/InBlock.gif)
48
![](/Images/OutliningIndicators/InBlock.gif)
49
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
50
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
51
![](/Images/OutliningIndicators/InBlock.gif)
52
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
53
![](/Images/OutliningIndicators/InBlock.gif)
54
![](/Images/OutliningIndicators/InBlock.gif)
55
![](/Images/OutliningIndicators/InBlock.gif)
56
![](/Images/OutliningIndicators/InBlock.gif)
57
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
58
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
59
![](/Images/OutliningIndicators/InBlock.gif)
60
![](/Images/OutliningIndicators/InBlock.gif)
61
![](/Images/OutliningIndicators/InBlock.gif)
62
![](/Images/OutliningIndicators/InBlock.gif)
63
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
64
![](/Images/OutliningIndicators/InBlock.gif)
65
![](/Images/OutliningIndicators/InBlock.gif)
66
![](/Images/OutliningIndicators/InBlock.gif)
67
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
68
![](/Images/OutliningIndicators/InBlock.gif)
69
![](/Images/OutliningIndicators/InBlock.gif)
70
![](/Images/OutliningIndicators/InBlock.gif)
71
![](/Images/OutliningIndicators/InBlock.gif)
72
![](/Images/OutliningIndicators/InBlock.gif)
73
![](/Images/OutliningIndicators/InBlock.gif)
74
![](/Images/OutliningIndicators/InBlock.gif)
75
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
76
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
77
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
78
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
79
![](/Images/OutliningIndicators/InBlock.gif)
80
![](/Images/OutliningIndicators/InBlock.gif)
81
![](/Images/OutliningIndicators/InBlock.gif)
82
![](/Images/OutliningIndicators/InBlock.gif)
83
![](/Images/OutliningIndicators/InBlock.gif)
84
![](/Images/OutliningIndicators/InBlock.gif)
85
![](/Images/OutliningIndicators/InBlock.gif)
86
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
87
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
88
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
89
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
90
![](/Images/OutliningIndicators/InBlock.gif)
91
![](/Images/OutliningIndicators/InBlock.gif)
92
![](/Images/OutliningIndicators/InBlock.gif)
93
![](/Images/OutliningIndicators/InBlock.gif)
94
![](/Images/OutliningIndicators/InBlock.gif)
95
![](/Images/OutliningIndicators/InBlock.gif)
96
![](/Images/OutliningIndicators/InBlock.gif)
97
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
98
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
99
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
100
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
101
![](/Images/OutliningIndicators/InBlock.gif)
102
![](/Images/OutliningIndicators/InBlock.gif)
103
![](/Images/OutliningIndicators/InBlock.gif)
104
![](/Images/OutliningIndicators/InBlock.gif)
105
![](/Images/OutliningIndicators/InBlock.gif)
106
![](/Images/OutliningIndicators/InBlock.gif)
107
![](/Images/OutliningIndicators/InBlock.gif)
108
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
109
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
110
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
111
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
112
![](/Images/OutliningIndicators/InBlock.gif)
113
![](/Images/OutliningIndicators/InBlock.gif)
114
![](/Images/OutliningIndicators/InBlock.gif)
115
![](/Images/OutliningIndicators/InBlock.gif)
116
![](/Images/OutliningIndicators/InBlock.gif)
117
![](/Images/OutliningIndicators/InBlock.gif)
118
![](/Images/OutliningIndicators/InBlock.gif)
119
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
120
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
121
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
122
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
123
![](/Images/OutliningIndicators/InBlock.gif)
124
![](/Images/OutliningIndicators/InBlock.gif)
125
![](/Images/OutliningIndicators/InBlock.gif)
126
![](/Images/OutliningIndicators/InBlock.gif)
127
![](/Images/OutliningIndicators/InBlock.gif)
128
![](/Images/OutliningIndicators/InBlock.gif)
129
![](/Images/OutliningIndicators/InBlock.gif)
130
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
131
![](/Images/OutliningIndicators/InBlock.gif)
132
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
133
![](/Images/OutliningIndicators/InBlock.gif)
134
![](/Images/OutliningIndicators/InBlock.gif)
135
![](/Images/OutliningIndicators/InBlock.gif)
136
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
137
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
138
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
139
![](/Images/OutliningIndicators/InBlock.gif)
140
![](/Images/OutliningIndicators/InBlock.gif)
141
![](/Images/OutliningIndicators/InBlock.gif)
142
![](/Images/OutliningIndicators/InBlock.gif)
143
![](/Images/OutliningIndicators/InBlock.gif)
144
![](/Images/OutliningIndicators/InBlock.gif)
145
![](/Images/OutliningIndicators/InBlock.gif)
146
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
147
![](/Images/OutliningIndicators/InBlock.gif)
148
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
149
![](/Images/OutliningIndicators/InBlock.gif)
150
![](/Images/OutliningIndicators/InBlock.gif)
151
![](/Images/OutliningIndicators/InBlock.gif)
152
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
153
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
154
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
155
![](/Images/OutliningIndicators/InBlock.gif)
156
![](/Images/OutliningIndicators/InBlock.gif)
157
![](/Images/OutliningIndicators/InBlock.gif)
158
![](/Images/OutliningIndicators/InBlock.gif)
159
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
160
![](/Images/OutliningIndicators/InBlock.gif)
161
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
162
![](/Images/OutliningIndicators/InBlock.gif)
163
![](/Images/OutliningIndicators/InBlock.gif)
164
![](/Images/OutliningIndicators/InBlock.gif)
165
![](/Images/OutliningIndicators/InBlock.gif)
166
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
167
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
168
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
169
![](/Images/OutliningIndicators/InBlock.gif)
170
![](/Images/OutliningIndicators/InBlock.gif)
171
![](/Images/OutliningIndicators/InBlock.gif)
172
![](/Images/OutliningIndicators/InBlock.gif)
173
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
174
![](/Images/OutliningIndicators/InBlock.gif)
175
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
176
![](/Images/OutliningIndicators/InBlock.gif)
177
![](/Images/OutliningIndicators/InBlock.gif)
178
![](/Images/OutliningIndicators/InBlock.gif)
179
![](/Images/OutliningIndicators/InBlock.gif)
180
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
181
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
182
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
183
![](/Images/OutliningIndicators/InBlock.gif)
184
![](/Images/OutliningIndicators/InBlock.gif)
185
![](/Images/OutliningIndicators/InBlock.gif)
186
![](/Images/OutliningIndicators/InBlock.gif)
187
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
188
![](/Images/OutliningIndicators/InBlock.gif)
189
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
190
![](/Images/OutliningIndicators/InBlock.gif)
191
![](/Images/OutliningIndicators/InBlock.gif)
192
![](/Images/OutliningIndicators/InBlock.gif)
193
![](/Images/OutliningIndicators/InBlock.gif)
194
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
195
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
196
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
197
![](/Images/OutliningIndicators/InBlock.gif)
198
![](/Images/OutliningIndicators/InBlock.gif)
199
![](/Images/OutliningIndicators/InBlock.gif)
200
![](/Images/OutliningIndicators/InBlock.gif)
201
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
202
![](/Images/OutliningIndicators/InBlock.gif)
203
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
204
![](/Images/OutliningIndicators/InBlock.gif)
205
![](/Images/OutliningIndicators/InBlock.gif)
206
![](/Images/OutliningIndicators/InBlock.gif)
207
![](/Images/OutliningIndicators/InBlock.gif)
208
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
209
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
210
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
211
![](/Images/OutliningIndicators/InBlock.gif)
212
![](/Images/OutliningIndicators/InBlock.gif)
213
![](/Images/OutliningIndicators/InBlock.gif)
214
![](/Images/OutliningIndicators/InBlock.gif)
215
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
216
![](/Images/OutliningIndicators/InBlock.gif)
217
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
218
![](/Images/OutliningIndicators/InBlock.gif)
219
![](/Images/OutliningIndicators/InBlock.gif)
220
![](/Images/OutliningIndicators/InBlock.gif)
221
![](/Images/OutliningIndicators/InBlock.gif)
222
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
223
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
224
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
225
![](/Images/OutliningIndicators/InBlock.gif)
226
![](/Images/OutliningIndicators/InBlock.gif)
227
![](/Images/OutliningIndicators/InBlock.gif)
228
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
229
![](/Images/OutliningIndicators/InBlock.gif)
230
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
231
![](/Images/OutliningIndicators/InBlock.gif)
232
![](/Images/OutliningIndicators/InBlock.gif)
233
![](/Images/OutliningIndicators/InBlock.gif)
234
![](/Images/OutliningIndicators/InBlock.gif)
235
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
236
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
237
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
238
![](/Images/OutliningIndicators/InBlock.gif)
239
![](/Images/OutliningIndicators/InBlock.gif)
240
![](/Images/OutliningIndicators/InBlock.gif)
241
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
242
![](/Images/OutliningIndicators/InBlock.gif)
243
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
244
![](/Images/OutliningIndicators/InBlock.gif)
245
![](/Images/OutliningIndicators/InBlock.gif)
246
![](/Images/OutliningIndicators/InBlock.gif)
247
![](/Images/OutliningIndicators/InBlock.gif)
248
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
249
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
250
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
251
![](/Images/OutliningIndicators/InBlock.gif)
252
![](/Images/OutliningIndicators/InBlock.gif)
253
![](/Images/OutliningIndicators/InBlock.gif)
254
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
255
![](/Images/OutliningIndicators/InBlock.gif)
256
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
257
![](/Images/OutliningIndicators/InBlock.gif)
258
![](/Images/OutliningIndicators/InBlock.gif)
259
![](/Images/OutliningIndicators/InBlock.gif)
260
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
261
![](/Images/OutliningIndicators/InBlock.gif)
262
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
263
![](/Images/OutliningIndicators/InBlock.gif)
264
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
265
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
266
![](/Images/OutliningIndicators/InBlock.gif)
267
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
268
![](/Images/OutliningIndicators/InBlock.gif)
269
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
270
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
271
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
272
![](/Images/OutliningIndicators/InBlock.gif)
273
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
274
![](/Images/OutliningIndicators/InBlock.gif)
275
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
276
![](/Images/OutliningIndicators/InBlock.gif)
277
![](/Images/OutliningIndicators/InBlock.gif)
278
![](/Images/OutliningIndicators/InBlock.gif)
279
![](/Images/OutliningIndicators/InBlock.gif)
280
![](/Images/OutliningIndicators/InBlock.gif)
281
![](/Images/OutliningIndicators/InBlock.gif)
282
![](/Images/OutliningIndicators/InBlock.gif)
283
![](/Images/OutliningIndicators/InBlock.gif)
284
![](/Images/OutliningIndicators/InBlock.gif)
285
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
286
![](/Images/OutliningIndicators/InBlock.gif)
287
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
288
![](/Images/OutliningIndicators/InBlock.gif)
289
![](/Images/OutliningIndicators/InBlock.gif)
290
![](/Images/OutliningIndicators/InBlock.gif)
291
![](/Images/OutliningIndicators/InBlock.gif)
292
![](/Images/OutliningIndicators/InBlock.gif)
293
![](/Images/OutliningIndicators/InBlock.gif)
294
![](/Images/OutliningIndicators/InBlock.gif)
295
![](/Images/OutliningIndicators/InBlock.gif)
296
![](/Images/OutliningIndicators/InBlock.gif)
297
![](/Images/OutliningIndicators/InBlock.gif)
298
![](/Images/OutliningIndicators/InBlock.gif)
299
![](/Images/OutliningIndicators/InBlock.gif)
300
![](/Images/OutliningIndicators/InBlock.gif)
301
![](/Images/OutliningIndicators/InBlock.gif)
302
![](/Images/OutliningIndicators/InBlock.gif)
303
![](/Images/OutliningIndicators/InBlock.gif)
304
![](/Images/OutliningIndicators/InBlock.gif)
305
![](/Images/OutliningIndicators/InBlock.gif)
306
![](/Images/OutliningIndicators/InBlock.gif)
307
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
308
![](/Images/OutliningIndicators/InBlock.gif)
309
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
310
![](/Images/OutliningIndicators/InBlock.gif)
311
![](/Images/OutliningIndicators/InBlock.gif)
312
![](/Images/OutliningIndicators/InBlock.gif)
313
![](/Images/OutliningIndicators/InBlock.gif)
314
![](/Images/OutliningIndicators/InBlock.gif)
315
![](/Images/OutliningIndicators/InBlock.gif)
316
![](/Images/OutliningIndicators/InBlock.gif)
317
![](/Images/OutliningIndicators/InBlock.gif)
318
![](/Images/OutliningIndicators/InBlock.gif)
319
![](/Images/OutliningIndicators/InBlock.gif)
320
![](/Images/OutliningIndicators/InBlock.gif)
321
![](/Images/OutliningIndicators/InBlock.gif)
322
![](/Images/OutliningIndicators/InBlock.gif)
323
![](/Images/OutliningIndicators/InBlock.gif)
324
![](/Images/OutliningIndicators/InBlock.gif)
325
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
326
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
327
![](/Images/OutliningIndicators/InBlock.gif)
328
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
329
![](/Images/OutliningIndicators/InBlock.gif)
330
![](/Images/OutliningIndicators/InBlock.gif)
331
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
332
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
333
![](/Images/OutliningIndicators/InBlock.gif)
334
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
335
![](/Images/OutliningIndicators/InBlock.gif)
336
![](/Images/OutliningIndicators/InBlock.gif)
337
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
338
![](/Images/OutliningIndicators/InBlock.gif)
339
![](/Images/OutliningIndicators/InBlock.gif)
340
![](/Images/OutliningIndicators/InBlock.gif)
341
![](/Images/OutliningIndicators/InBlock.gif)
342
![](/Images/OutliningIndicators/InBlock.gif)
343
![](/Images/OutliningIndicators/InBlock.gif)
344
![](/Images/OutliningIndicators/InBlock.gif)
345
![](/Images/OutliningIndicators/InBlock.gif)
346
![](/Images/OutliningIndicators/InBlock.gif)
347
![](/Images/OutliningIndicators/InBlock.gif)
348
![](/Images/OutliningIndicators/InBlock.gif)
349
![](/Images/OutliningIndicators/InBlock.gif)
350
![](/Images/OutliningIndicators/InBlock.gif)
351
![](/Images/OutliningIndicators/InBlock.gif)
352
![](/Images/OutliningIndicators/InBlock.gif)
353
![](/Images/OutliningIndicators/InBlock.gif)
354
![](/Images/OutliningIndicators/InBlock.gif)
355
![](/Images/OutliningIndicators/InBlock.gif)
356
![](/Images/OutliningIndicators/InBlock.gif)
357
![](/Images/OutliningIndicators/InBlock.gif)
358
![](/Images/OutliningIndicators/InBlock.gif)
359
![](/Images/OutliningIndicators/InBlock.gif)
360
![](/Images/OutliningIndicators/InBlock.gif)
361
![](/Images/OutliningIndicators/InBlock.gif)
362
![](/Images/OutliningIndicators/InBlock.gif)
363
![](/Images/OutliningIndicators/InBlock.gif)
364
![](/Images/OutliningIndicators/InBlock.gif)
365
![](/Images/OutliningIndicators/InBlock.gif)
366
![](/Images/OutliningIndicators/InBlock.gif)
367
![](/Images/OutliningIndicators/InBlock.gif)
368
![](/Images/OutliningIndicators/InBlock.gif)
369
![](/Images/OutliningIndicators/InBlock.gif)
370
![](/Images/OutliningIndicators/InBlock.gif)
371
![](/Images/OutliningIndicators/InBlock.gif)
372
![](/Images/OutliningIndicators/InBlock.gif)
373
![](/Images/OutliningIndicators/InBlock.gif)
374
![](/Images/OutliningIndicators/InBlock.gif)
375
![](/Images/OutliningIndicators/InBlock.gif)
376
![](/Images/OutliningIndicators/InBlock.gif)
377
![](/Images/OutliningIndicators/InBlock.gif)
378
![](/Images/OutliningIndicators/InBlock.gif)
379
![](/Images/OutliningIndicators/InBlock.gif)
380
![](/Images/OutliningIndicators/InBlock.gif)
381
![](/Images/OutliningIndicators/InBlock.gif)
382
![](/Images/OutliningIndicators/InBlock.gif)
383
![](/Images/OutliningIndicators/InBlock.gif)
384
![](/Images/OutliningIndicators/InBlock.gif)
385
![](/Images/OutliningIndicators/InBlock.gif)
386
![](/Images/OutliningIndicators/InBlock.gif)
387
![](/Images/OutliningIndicators/InBlock.gif)
388
![](/Images/OutliningIndicators/InBlock.gif)
389
![](/Images/OutliningIndicators/InBlock.gif)
390
![](/Images/OutliningIndicators/InBlock.gif)
391
![](/Images/OutliningIndicators/InBlock.gif)
392
![](/Images/OutliningIndicators/InBlock.gif)
393
![](/Images/OutliningIndicators/InBlock.gif)
394
![](/Images/OutliningIndicators/InBlock.gif)
395
![](/Images/OutliningIndicators/InBlock.gif)
396
![](/Images/OutliningIndicators/InBlock.gif)
397
![](/Images/OutliningIndicators/InBlock.gif)
398
![](/Images/OutliningIndicators/InBlock.gif)
399
![](/Images/OutliningIndicators/InBlock.gif)
400
![](/Images/OutliningIndicators/InBlock.gif)
401
![](/Images/OutliningIndicators/InBlock.gif)
402
![](/Images/OutliningIndicators/InBlock.gif)
403
![](/Images/OutliningIndicators/InBlock.gif)
404
![](/Images/OutliningIndicators/InBlock.gif)
405
![](/Images/OutliningIndicators/InBlock.gif)
406
![](/Images/OutliningIndicators/InBlock.gif)
407
![](/Images/OutliningIndicators/InBlock.gif)
408
![](/Images/OutliningIndicators/InBlock.gif)
409
![](/Images/OutliningIndicators/InBlock.gif)
410
![](/Images/OutliningIndicators/InBlock.gif)
411
![](/Images/OutliningIndicators/InBlock.gif)
412
![](/Images/OutliningIndicators/InBlock.gif)
413
![](/Images/OutliningIndicators/InBlock.gif)
414
![](/Images/OutliningIndicators/InBlock.gif)
415
![](/Images/OutliningIndicators/InBlock.gif)
416
![](/Images/OutliningIndicators/InBlock.gif)
417
![](/Images/OutliningIndicators/InBlock.gif)
418
![](/Images/OutliningIndicators/InBlock.gif)
419
![](/Images/OutliningIndicators/InBlock.gif)
420
![](/Images/OutliningIndicators/InBlock.gif)
421
![](/Images/OutliningIndicators/InBlock.gif)
422
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
423
![](/Images/OutliningIndicators/InBlock.gif)
424
![](/Images/OutliningIndicators/InBlock.gif)
425
![](/Images/OutliningIndicators/InBlock.gif)
426
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
427
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
428
![](/Images/OutliningIndicators/InBlock.gif)
429
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
430
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
431
![](/Images/OutliningIndicators/InBlock.gif)
432
![](/Images/OutliningIndicators/InBlock.gif)
433
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
434
![](/Images/OutliningIndicators/InBlock.gif)
435
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
436
![](/Images/OutliningIndicators/InBlock.gif)
437
![](/Images/OutliningIndicators/InBlock.gif)
438
![](/Images/OutliningIndicators/InBlock.gif)
439
![](/Images/OutliningIndicators/InBlock.gif)
440
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
441
![](/Images/OutliningIndicators/InBlock.gif)
442
![](/Images/OutliningIndicators/InBlock.gif)
443
![](/Images/OutliningIndicators/InBlock.gif)
444
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
445
![](/Images/OutliningIndicators/InBlock.gif)
446
![](/Images/OutliningIndicators/InBlock.gif)
447
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
448
![](/Images/OutliningIndicators/InBlock.gif)
449
![](/Images/OutliningIndicators/InBlock.gif)
450
![](/Images/OutliningIndicators/InBlock.gif)
451
![](/Images/OutliningIndicators/InBlock.gif)
452
![](/Images/OutliningIndicators/InBlock.gif)
453
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
454
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
455
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
456
![](/Images/OutliningIndicators/InBlock.gif)
457
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
458
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
459
![](/Images/OutliningIndicators/None.gif)
以下是运行效果图:
本人水平有限,欢迎各位朋友多多指教