一个自定义的数字输入框控件
项目开发中经常会用到只允许输入数字的文本框控件。虽然很多第三方控商已经提供了不少此类优秀的控件,但是我们为什么就不能自已动手也来DIY一把呢。以下就是本人的一个小例子:
我的设计思路是在用户每次敲击键盘时对键入的字符进行校验以过滤不合法的字符。在文本框失去焦点时再对录入的数据进行一次校验以符合预定的格式。以下是该控件的实现代码。
1
using
System;
2
using
System.Collections.Generic;
3
using
System.ComponentModel;
4
using
System.Drawing;
5
using
System.Data;
6
using
System.Text;
7
using
System.Windows.Forms;
8![None.gif](/Images/OutliningIndicators/None.gif)
9
namespace
Nelson.ControlLibrary
10![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
{
11
public partial class NumberBox : System.Windows.Forms.TextBox
12![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
13
public NumberBox()
14![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
15
InitializeComponent();
16
}
17![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
18![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
自定义成员#region 自定义成员
19
private int maxIntegerLength = 10;
20
private int minIntegerLength = 0;
21
private int maxDecimalLength = 4;
22
private int minDecimalLength = 0;
23
private int integerLength;
24
private int decimalLength;
25
#endregion
26![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
27![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
自定义属性#region 自定义属性
28![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//// <summary>
29
/// 最大整数位数
30
/// </summary>
31
public int MaxIntegerLength
32![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
33
get
34![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
35
return maxIntegerLength;
36
}
37
set
38![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
39
if (value >= 0 && value >= minIntegerLength)
40![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
41
maxIntegerLength = value;
42
}
43
else
44![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
45
throw new Exception("最大整数位数不应小于最小整数位数");
46
}
47
}
48
}
49![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
50![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//// <summary>
51
/// 最小整数位数
52
/// </summary>
53
public int MinIntegerLength
54![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
55
get
56![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
57
return minIntegerLength;
58
}
59
set
60![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
61
if (value >= 0 && value <= maxIntegerLength)
62![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
63
minIntegerLength = value;
64
}
65
else
66![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
67
throw new Exception("最小整数位数不应大于最大整数位数");
68
}
69
}
70
}
71![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
72![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//// <summary>
73
/// 最大小数位数
74
/// </summary>
75
public int MaxDecimalLength
76![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
77
get
78![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
79
return maxDecimalLength;
80
}
81
set
82![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
83
if (value >= 0 && value >= minDecimalLength)
84![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
85
maxDecimalLength = value;
86
}
87
else
88![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
89
throw new Exception("最大小数位数不应小于最小小数位数");
90
}
91
}
92
}
93![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
94![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//// <summary>
95
/// 最小小数位数
96
/// </summary>
97
public int MinDecimalLength
98![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
99
get
100![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
101
return minDecimalLength;
102
}
103
set
104![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
105
if (value >= 0 && value <= maxDecimalLength)
106![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
107
minDecimalLength = value;
108
}
109
else
110![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
111
throw new Exception("最小小数位数不应大于最大小数位数");
112
}
113
}
114
}
115
#endregion
116![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
117![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
重写方法#region 重写方法
118
protected override void OnKeyPress(KeyPressEventArgs e)
119![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
120
int editIndex = SelectionStart; //获取当前编辑位
121![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
122
if (e.KeyChar == (char)Keys.Back) return; //放行"退格"键
123![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
124
if (e.KeyChar.Equals('.') || Char.IsNumber(e.KeyChar)) //过滤非数字与非小数点
125![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
126
if (Text.IndexOf(".") > -1) //是否存在小数点
127![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
128
//禁止重复输入小数点
129
if (e.KeyChar.Equals('.'))
130![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
131
e.Handled = true;
132
return;
133
}
134
else
135![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
136
if (SelectedText.Length > 0)
137![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
138
return;
139
}
140![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
141
integerLength = Text.IndexOf(".");
142
decimalLength = Text.Length - integerLength - 1;
143![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
144
//控制最大小数位数
145
if (decimalLength >= maxDecimalLength && editIndex > Text.IndexOf("."))
146![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
147
e.Handled = true;
148
return;
149
}
150![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
151
//控制最大整数位数
152
if (integerLength >= maxIntegerLength && editIndex <= Text.IndexOf("."))
153![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
154
e.Handled = true;
155
return;
156
}
157
}
158
}
159
else
160![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
161
//控制最大整数位数
162
integerLength = Text.Length;
163
if (integerLength == maxIntegerLength && !e.KeyChar.Equals('.'))
164![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
165
e.Handled = true;
166
}
167
}
168
}
169
else
170![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
171
e.Handled = true;
172
}
173![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
174
base.OnKeyPress(e);
175
}
176![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
177![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
178
protected override void OnLeave(EventArgs e)
179![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
180
if (Text == null || Text == "") return;
181![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
182
Text = Text.TrimStart('0');
183![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
184
//取整数位数与小数位数
185
if (Text.IndexOf(".") == -1)
186![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
187
integerLength = Text.Length;
188
decimalLength = 0;
189
}
190
else
191![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
192
integerLength = Text.IndexOf(".");
193
decimalLength = Text.Length - integerLength - 1;
194
195
//验证小数位数是否符合最小值(不足补零)
196
if (decimalLength < minDecimalLength)
197![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
198
Text = Text.PadRight(integerLength + minDecimalLength + 1, '0');
199
}
200
}
201![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
202
//整数未输自动补零
203
if (integerLength == 0)
204![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
205
Text = "0" + Text;
206
}
207![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
208
//验证整数位数是否符合最小值
209
if (integerLength < minIntegerLength)
210![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
211
Focus();
212
Select(0, integerLength);
213
}
214![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
215
//验证整数位数是否符合最大值
216
if (integerLength > maxIntegerLength)
217![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
218
Focus();
219
Select(0, integerLength);
220
}
221
base.OnLeave(e);
222
}
223
#endregion
224
}
225
}
226
![None.gif](/Images/OutliningIndicators/None.gif)
2
![None.gif](/Images/OutliningIndicators/None.gif)
3
![None.gif](/Images/OutliningIndicators/None.gif)
4
![None.gif](/Images/OutliningIndicators/None.gif)
5
![None.gif](/Images/OutliningIndicators/None.gif)
6
![None.gif](/Images/OutliningIndicators/None.gif)
7
![None.gif](/Images/OutliningIndicators/None.gif)
8
![None.gif](/Images/OutliningIndicators/None.gif)
9
![None.gif](/Images/OutliningIndicators/None.gif)
10
![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
![ContractedBlock.gif](/Images/OutliningIndicators/ContractedBlock.gif)
![dot.gif](https://www.cnblogs.com/Images/dot.gif)
11
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
12
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](https://www.cnblogs.com/Images/dot.gif)
13
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
14
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](https://www.cnblogs.com/Images/dot.gif)
15
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
16
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
17
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
18
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
19
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
20
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
21
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
22
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
23
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
24
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
25
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
26
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
27
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
28
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
29
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
30
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
31
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
32
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](https://www.cnblogs.com/Images/dot.gif)
33
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
34
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](https://www.cnblogs.com/Images/dot.gif)
35
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
36
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
37
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
38
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](https://www.cnblogs.com/Images/dot.gif)
39
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
40
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](https://www.cnblogs.com/Images/dot.gif)
41
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
42
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
43
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
44
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](https://www.cnblogs.com/Images/dot.gif)
45
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
46
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
47
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
48
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
49
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
50
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
51
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
52
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
53
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
54
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](https://www.cnblogs.com/Images/dot.gif)
55
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
56
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](https://www.cnblogs.com/Images/dot.gif)
57
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
58
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
59
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
60
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](https://www.cnblogs.com/Images/dot.gif)
61
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
62
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](https://www.cnblogs.com/Images/dot.gif)
63
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
64
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
65
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
66
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](https://www.cnblogs.com/Images/dot.gif)
67
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
68
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
69
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
70
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
71
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
72
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
73
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
74
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
75
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
76
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](https://www.cnblogs.com/Images/dot.gif)
77
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
78
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](https://www.cnblogs.com/Images/dot.gif)
79
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
80
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
81
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
82
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](https://www.cnblogs.com/Images/dot.gif)
83
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
84
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](https://www.cnblogs.com/Images/dot.gif)
85
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
86
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
87
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
88
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](https://www.cnblogs.com/Images/dot.gif)
89
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
90
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
91
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
92
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
93
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
94
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
95
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
96
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
97
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
98
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](https://www.cnblogs.com/Images/dot.gif)
99
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
100
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](https://www.cnblogs.com/Images/dot.gif)
101
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
102
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
103
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
104
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](https://www.cnblogs.com/Images/dot.gif)
105
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
106
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](https://www.cnblogs.com/Images/dot.gif)
107
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
108
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
109
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
110
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](https://www.cnblogs.com/Images/dot.gif)
111
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
112
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
113
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
114
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
115
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
116
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
117
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
118
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
119
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](https://www.cnblogs.com/Images/dot.gif)
120
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
121
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
122
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
123
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
124
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
125
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](https://www.cnblogs.com/Images/dot.gif)
126
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
127
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](https://www.cnblogs.com/Images/dot.gif)
128
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
129
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
130
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](https://www.cnblogs.com/Images/dot.gif)
131
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
132
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
133
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
134
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
135
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](https://www.cnblogs.com/Images/dot.gif)
136
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
137
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](https://www.cnblogs.com/Images/dot.gif)
138
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
139
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
140
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
141
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
142
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
143
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
144
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
145
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
146
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](https://www.cnblogs.com/Images/dot.gif)
147
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
148
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
149
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
150
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
151
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
152
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
153
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](https://www.cnblogs.com/Images/dot.gif)
154
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
155
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
156
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
157
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
158
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
159
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
160
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](https://www.cnblogs.com/Images/dot.gif)
161
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
162
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
163
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
164
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](https://www.cnblogs.com/Images/dot.gif)
165
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
166
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
167
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
168
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
169
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
170
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](https://www.cnblogs.com/Images/dot.gif)
171
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
172
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
173
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
174
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
175
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
176
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
177
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
178
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
179
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](https://www.cnblogs.com/Images/dot.gif)
180
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
181
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
182
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
183
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
184
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
185
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
186
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](https://www.cnblogs.com/Images/dot.gif)
187
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
188
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
189
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
190
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
191
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](https://www.cnblogs.com/Images/dot.gif)
192
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
193
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
194
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
195
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
196
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
197
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](https://www.cnblogs.com/Images/dot.gif)
198
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
199
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
200
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
201
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
202
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
203
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
204
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](https://www.cnblogs.com/Images/dot.gif)
205
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
206
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
207
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
208
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
209
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
210
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](https://www.cnblogs.com/Images/dot.gif)
211
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
212
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
213
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
214
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
215
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
216
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
217
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](https://www.cnblogs.com/Images/dot.gif)
218
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
219
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
220
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
221
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
222
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
223
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
224
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
225
![ExpandedBlockEnd.gif](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
226
![None.gif](/Images/OutliningIndicators/None.gif)