[示例涉及]:
1、TextBox控件的基本使用
2、Validating事件的使用
3、多委托处理同一事件方法
[示例代码]:2文件(其余默认)
Form1.Designer.cs
1
namespace WA_TextBoxTest
2

{
3
partial class Form1
4
{
5
/**//// <summary>
6
/// 必需的设计器变量。
7
/// </summary>
8
private System.ComponentModel.IContainer components = null;
9
10
/**//// <summary>
11
/// 清理所有正在使用的资源。
12
/// </summary>
13
/// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
14
protected override void Dispose(bool disposing)
15
{
16
if (disposing && (components != null))
17
{
18
components.Dispose();
19
}
20
base.Dispose(disposing);
21
}
22
23
Windows 窗体设计器生成的代码#region Windows 窗体设计器生成的代码
24
25
/**//// <summary>
26
/// 设计器支持所需的方法 - 不要
27
/// 使用代码编辑器修改此方法的内容。
28
/// </summary>
29
private void InitializeComponent()
30
{
31
this.label1 = new System.Windows.Forms.Label();
32
this.label2 = new System.Windows.Forms.Label();
33
this.textBoxName = new System.Windows.Forms.TextBox();
34
this.textBoxAddress = new System.Windows.Forms.TextBox();
35
this.textBoxOccupation = new System.Windows.Forms.TextBox();
36
this.textBoxAge = new System.Windows.Forms.TextBox();
37
this.textBoxOutput = new System.Windows.Forms.TextBox();
38
this.label3 = new System.Windows.Forms.Label();
39
this.label4 = new System.Windows.Forms.Label();
40
this.label5 = new System.Windows.Forms.Label();
41
this.buttonOK = new System.Windows.Forms.Button();
42
this.buttonHelp = new System.Windows.Forms.Button();
43
this.SuspendLayout();
44
//
45
// label1
46
//
47
this.label1.AutoSize = true;
48
this.label1.Location = new System.Drawing.Point(26, 27);
49
this.label1.Name = "label1";
50
this.label1.Size = new System.Drawing.Size(59, 12);
51
this.label1.TabIndex = 0;
52
this.label1.Text = "labelName";
53
//
54
// label2
55
//
56
this.label2.AutoSize = true;
57
this.label2.Location = new System.Drawing.Point(26, 53);
58
this.label2.Name = "label2";
59
this.label2.Size = new System.Drawing.Size(77, 12);
60
this.label2.TabIndex = 1;
61
this.label2.Text = "labelAddress";
62
//
63
// textBoxName
64
//
65
this.textBoxName.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
66
| System.Windows.Forms.AnchorStyles.Right)));
67
this.textBoxName.Location = new System.Drawing.Point(127, 24);
68
this.textBoxName.Name = "textBoxName";
69
this.textBoxName.Size = new System.Drawing.Size(317, 21);
70
this.textBoxName.TabIndex = 2;
71
//
72
// textBoxAddress
73
//
74
this.textBoxAddress.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
75
| System.Windows.Forms.AnchorStyles.Right)));
76
this.textBoxAddress.Location = new System.Drawing.Point(127, 50);
77
this.textBoxAddress.Multiline = true;
78
this.textBoxAddress.Name = "textBoxAddress";
79
this.textBoxAddress.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;
80
this.textBoxAddress.Size = new System.Drawing.Size(317, 102);
81
this.textBoxAddress.TabIndex = 2;
82
//
83
// textBoxOccupation
84
//
85
this.textBoxOccupation.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
86
| System.Windows.Forms.AnchorStyles.Right)));
87
this.textBoxOccupation.Location = new System.Drawing.Point(127, 158);
88
this.textBoxOccupation.Name = "textBoxOccupation";
89
this.textBoxOccupation.Size = new System.Drawing.Size(317, 21);
90
this.textBoxOccupation.TabIndex = 3;
91
this.textBoxOccupation.Validating += new System.ComponentModel.CancelEventHandler(this.textBoxOccupation_Validating);
92
//
93
// textBoxAge
94
//
95
this.textBoxAge.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
96
| System.Windows.Forms.AnchorStyles.Right)));
97
this.textBoxAge.Location = new System.Drawing.Point(127, 193);
98
this.textBoxAge.Name = "textBoxAge";
99
this.textBoxAge.Size = new System.Drawing.Size(99, 21);
100
this.textBoxAge.TabIndex = 4;
101
this.textBoxAge.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.textBoxAge_KeyPress);
102
//
103
// textBoxOutput
104
//
105
this.textBoxOutput.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
106
| System.Windows.Forms.AnchorStyles.Left)
107
| System.Windows.Forms.AnchorStyles.Right)));
108
this.textBoxOutput.Location = new System.Drawing.Point(28, 243);
109
this.textBoxOutput.Multiline = true;
110
this.textBoxOutput.Name = "textBoxOutput";
111
this.textBoxOutput.ReadOnly = true;
112
this.textBoxOutput.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;
113
this.textBoxOutput.Size = new System.Drawing.Size(416, 150);
114
this.textBoxOutput.TabIndex = 5;
115
//
116
// label3
117
//
118
this.label3.AutoSize = true;
119
this.label3.Location = new System.Drawing.Point(26, 161);
120
this.label3.Name = "label3";
121
this.label3.Size = new System.Drawing.Size(95, 12);
122
this.label3.TabIndex = 6;
123
this.label3.Text = "labelOccupation";
124
//
125
// label4
126
//
127
this.label4.AutoSize = true;
128
this.label4.Location = new System.Drawing.Point(26, 196);
129
this.label4.Name = "label4";
130
this.label4.Size = new System.Drawing.Size(53, 12);
131
this.label4.TabIndex = 7;
132
this.label4.Text = "labelAge";
133
//
134
// label5
135
//
136
this.label5.AutoSize = true;
137
this.label5.Location = new System.Drawing.Point(26, 228);
138
this.label5.Name = "label5";
139
this.label5.Size = new System.Drawing.Size(71, 12);
140
this.label5.TabIndex = 8;
141
this.label5.Text = "labelOutput";
142
//
143
// buttonOK
144
//
145
this.buttonOK.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
146
this.buttonOK.Location = new System.Drawing.Point(458, 18);
147
this.buttonOK.Name = "buttonOK";
148
this.buttonOK.Size = new System.Drawing.Size(82, 21);
149
this.buttonOK.TabIndex = 9;
150
this.buttonOK.Text = "OK";
151
this.buttonOK.UseVisualStyleBackColor = true;
152
this.buttonOK.Click += new System.EventHandler(this.buttonOK_Click);
153
//
154
// buttonHelp
155
//
156
this.buttonHelp.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
157
this.buttonHelp.CausesValidation = false;
158
this.buttonHelp.Location = new System.Drawing.Point(458, 43);
159
this.buttonHelp.Name = "buttonHelp";
160
this.buttonHelp.Size = new System.Drawing.Size(82, 21);
161
this.buttonHelp.TabIndex = 10;
162
this.buttonHelp.Text = "Help";
163
this.buttonHelp.UseVisualStyleBackColor = true;
164
this.buttonHelp.Click += new System.EventHandler(this.buttonHelp_Click);
165
//
166
// Form1
167
//
168
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
169
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
170
this.ClientSize = new System.Drawing.Size(561, 405);
171
this.Controls.Add(this.buttonHelp);
172
this.Controls.Add(this.buttonOK);
173
this.Controls.Add(this.label5);
174
this.Controls.Add(this.label4);
175
this.Controls.Add(this.label3);
176
this.Controls.Add(this.textBoxOutput);
177
this.Controls.Add(this.textBoxAge);
178
this.Controls.Add(this.textBoxOccupation);
179
this.Controls.Add(this.textBoxAddress);
180
this.Controls.Add(this.textBoxName);
181
this.Controls.Add(this.label2);
182
this.Controls.Add(this.label1);
183
this.Name = "Form1";
184
this.Text = "Form1";
185
this.Validating += new System.ComponentModel.CancelEventHandler(this.textBoxEmpty_Validating);
186
this.ResumeLayout(false);
187
this.PerformLayout();
188
189
}
190
191
#endregion
192
193
private System.Windows.Forms.Label label1;
194
private System.Windows.Forms.Label label2;
195
private System.Windows.Forms.TextBox textBoxName;
196
private System.Windows.Forms.TextBox textBoxAddress;
197
private System.Windows.Forms.TextBox textBoxOccupation;
198
private System.Windows.Forms.TextBox textBoxAge;
199
private System.Windows.Forms.TextBox textBoxOutput;
200
private System.Windows.Forms.Label label3;
201
private System.Windows.Forms.Label label4;
202
private System.Windows.Forms.Label label5;
203
private System.Windows.Forms.Button buttonOK;
204
private System.Windows.Forms.Button buttonHelp;
205
}
206
}
207
208
namespace WA_TextBoxTest2


{3
partial class Form14

{5

/**//// <summary>6
/// 必需的设计器变量。7
/// </summary>8
private System.ComponentModel.IContainer components = null;9

10

/**//// <summary>11
/// 清理所有正在使用的资源。12
/// </summary>13
/// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>14
protected override void Dispose(bool disposing)15

{16
if (disposing && (components != null))17

{18
components.Dispose();19
}20
base.Dispose(disposing);21
}22

23

Windows 窗体设计器生成的代码#region Windows 窗体设计器生成的代码24

25

/**//// <summary>26
/// 设计器支持所需的方法 - 不要27
/// 使用代码编辑器修改此方法的内容。28
/// </summary>29
private void InitializeComponent()30

{31
this.label1 = new System.Windows.Forms.Label();32
this.label2 = new System.Windows.Forms.Label();33
this.textBoxName = new System.Windows.Forms.TextBox();34
this.textBoxAddress = new System.Windows.Forms.TextBox();35
this.textBoxOccupation = new System.Windows.Forms.TextBox();36
this.textBoxAge = new System.Windows.Forms.TextBox();37
this.textBoxOutput = new System.Windows.Forms.TextBox();38
this.label3 = new System.Windows.Forms.Label();39
this.label4 = new System.Windows.Forms.Label();40
this.label5 = new System.Windows.Forms.Label();41
this.buttonOK = new System.Windows.Forms.Button();42
this.buttonHelp = new System.Windows.Forms.Button();43
this.SuspendLayout();44
// 45
// label146
// 47
this.label1.AutoSize = true;48
this.label1.Location = new System.Drawing.Point(26, 27);49
this.label1.Name = "label1";50
this.label1.Size = new System.Drawing.Size(59, 12);51
this.label1.TabIndex = 0;52
this.label1.Text = "labelName";53
// 54
// label255
// 56
this.label2.AutoSize = true;57
this.label2.Location = new System.Drawing.Point(26, 53);58
this.label2.Name = "label2";59
this.label2.Size = new System.Drawing.Size(77, 12);60
this.label2.TabIndex = 1;61
this.label2.Text = "labelAddress";62
// 63
// textBoxName64
// 65
this.textBoxName.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)66
| System.Windows.Forms.AnchorStyles.Right)));67
this.textBoxName.Location = new System.Drawing.Point(127, 24);68
this.textBoxName.Name = "textBoxName";69
this.textBoxName.Size = new System.Drawing.Size(317, 21);70
this.textBoxName.TabIndex = 2;71
// 72
// textBoxAddress73
// 74
this.textBoxAddress.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)75
| System.Windows.Forms.AnchorStyles.Right)));76
this.textBoxAddress.Location = new System.Drawing.Point(127, 50);77
this.textBoxAddress.Multiline = true;78
this.textBoxAddress.Name = "textBoxAddress";79
this.textBoxAddress.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;80
this.textBoxAddress.Size = new System.Drawing.Size(317, 102);81
this.textBoxAddress.TabIndex = 2;82
// 83
// textBoxOccupation84
// 85
this.textBoxOccupation.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)86
| System.Windows.Forms.AnchorStyles.Right)));87
this.textBoxOccupation.Location = new System.Drawing.Point(127, 158);88
this.textBoxOccupation.Name = "textBoxOccupation";89
this.textBoxOccupation.Size = new System.Drawing.Size(317, 21);90
this.textBoxOccupation.TabIndex = 3;91
this.textBoxOccupation.Validating += new System.ComponentModel.CancelEventHandler(this.textBoxOccupation_Validating);92
// 93
// textBoxAge94
// 95
this.textBoxAge.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)96
| System.Windows.Forms.AnchorStyles.Right)));97
this.textBoxAge.Location = new System.Drawing.Point(127, 193);98
this.textBoxAge.Name = "textBoxAge";99
this.textBoxAge.Size = new System.Drawing.Size(99, 21);100
this.textBoxAge.TabIndex = 4;101
this.textBoxAge.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.textBoxAge_KeyPress);102
// 103
// textBoxOutput104
// 105
this.textBoxOutput.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)106
| System.Windows.Forms.AnchorStyles.Left)107
| System.Windows.Forms.AnchorStyles.Right)));108
this.textBoxOutput.Location = new System.Drawing.Point(28, 243);109
this.textBoxOutput.Multiline = true;110
this.textBoxOutput.Name = "textBoxOutput";111
this.textBoxOutput.ReadOnly = true;112
this.textBoxOutput.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;113
this.textBoxOutput.Size = new System.Drawing.Size(416, 150);114
this.textBoxOutput.TabIndex = 5;115
// 116
// label3117
// 118
this.label3.AutoSize = true;119
this.label3.Location = new System.Drawing.Point(26, 161);120
this.label3.Name = "label3";121
this.label3.Size = new System.Drawing.Size(95, 12);122
this.label3.TabIndex = 6;123
this.label3.Text = "labelOccupation";124
// 125
// label4126
// 127
this.label4.AutoSize = true;128
this.label4.Location = new System.Drawing.Point(26, 196);129
this.label4.Name = "label4";130
this.label4.Size = new System.Drawing.Size(53, 12);131
this.label4.TabIndex = 7;132
this.label4.Text = "labelAge";133
// 134
// label5135
// 136
this.label5.AutoSize = true;137
this.label5.Location = new System.Drawing.Point(26, 228);138
this.label5.Name = "label5";139
this.label5.Size = new System.Drawing.Size(71, 12);140
this.label5.TabIndex = 8;141
this.label5.Text = "labelOutput";142
// 143
// buttonOK144
// 145
this.buttonOK.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));146
this.buttonOK.Location = new System.Drawing.Point(458, 18);147
this.buttonOK.Name = "buttonOK";148
this.buttonOK.Size = new System.Drawing.Size(82, 21);149
this.buttonOK.TabIndex = 9;150
this.buttonOK.Text = "OK";151
this.buttonOK.UseVisualStyleBackColor = true;152
this.buttonOK.Click += new System.EventHandler(this.buttonOK_Click);153
// 154
// buttonHelp155
// 156
this.buttonHelp.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));157
this.buttonHelp.CausesValidation = false;158
this.buttonHelp.Location = new System.Drawing.Point(458, 43);159
this.buttonHelp.Name = "buttonHelp";160
this.buttonHelp.Size = new System.Drawing.Size(82, 21);161
this.buttonHelp.TabIndex = 10;162
this.buttonHelp.Text = "Help";163
this.buttonHelp.UseVisualStyleBackColor = true;164
this.buttonHelp.Click += new System.EventHandler(this.buttonHelp_Click);165
// 166
// Form1167
// 168
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);169
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;170
this.ClientSize = new System.Drawing.Size(561, 405);171
this.Controls.Add(this.buttonHelp);172
this.Controls.Add(this.buttonOK);173
this.Controls.Add(this.label5);174
this.Controls.Add(this.label4);175
this.Controls.Add(this.label3);176
this.Controls.Add(this.textBoxOutput);177
this.Controls.Add(this.textBoxAge);178
this.Controls.Add(this.textBoxOccupation);179
this.Controls.Add(this.textBoxAddress);180
this.Controls.Add(this.textBoxName);181
this.Controls.Add(this.label2);182
this.Controls.Add(this.label1);183
this.Name = "Form1";184
this.Text = "Form1";185
this.Validating += new System.ComponentModel.CancelEventHandler(this.textBoxEmpty_Validating);186
this.ResumeLayout(false);187
this.PerformLayout();188

189
}190

191
#endregion192

193
private System.Windows.Forms.Label label1;194
private System.Windows.Forms.Label label2;195
private System.Windows.Forms.TextBox textBoxName;196
private System.Windows.Forms.TextBox textBoxAddress;197
private System.Windows.Forms.TextBox textBoxOccupation;198
private System.Windows.Forms.TextBox textBoxAge;199
private System.Windows.Forms.TextBox textBoxOutput;200
private System.Windows.Forms.Label label3;201
private System.Windows.Forms.Label label4;202
private System.Windows.Forms.Label label5;203
private System.Windows.Forms.Button buttonOK;204
private System.Windows.Forms.Button buttonHelp;205
}206
}207

208

Form1.cs
1
using System;
2
using System.Collections.Generic;
3
using System.ComponentModel;
4
using System.Data;
5
using System.Drawing;
6
using System.Text;
7
using System.Windows.Forms;
8
9
namespace WA_TextBoxTest
10

{
11
public partial class Form1 : Form
12
{
13
public Form1()
14
{
15
InitializeComponent();
16
this.buttonOK.Enabled = false;
17
18
//Tag values for testing if the data is valid.
19
this.textBoxName.Tag = false;
20
this.textBoxAddress.Tag = false;
21
this.textBoxAge.Tag = false;
22
this.textBoxOccupation.Tag = false;
23
24
//订阅事件Subscriptions to events
25
this.textBoxName.Validating += new CancelEventHandler(this.textBoxEmpty_Validating);
26
this.textBoxAddress.Validating += new CancelEventHandler(this.textBoxEmpty_Validating);
27
this.textBoxOccupation.Validating += new CancelEventHandler(this.textBoxOccupation_Validating);
28
this.textBoxAge.Validating += new CancelEventHandler(this.textBoxEmpty_Validating);
29
30
//当控件中文本发生改变,就激发TextChanged事件。
31
this.textBoxName.TextChanged +=new EventHandler(textBox_TextChanged);
32
this.textBoxAddress.TextChanged+=new EventHandler(textBox_TextChanged);
33
this.textBoxOccupation.TextChanged+=new EventHandler(textBox_TextChanged);
34
this.textBoxAge.TextChanged += new EventHandler(textBox_TextChanged);
35
}
36
37
private void buttonOK_Click(object sender, EventArgs e)
38
{
39
//No testing for invalid values are made ,as that should not be necessary
40
string output;
41
42
//Concatenate the text values of for TextBoxes.
43
output = "Name:" + this.textBoxName.Text + "\r\n";
44
output += "Address:" + this.textBoxAddress.Text + "\r\n";
45
output += "Occupation:" + this.textBoxOccupation.Text + "\r\n";
46
output += "Age:" + this.textBoxAge.Text;
47
48
//Insert the new text.
49
this.textBoxOutput.Text = output;
50
}
51
52
private void buttonHelp_Click(object sender, EventArgs e)
53
{
54
//Write a short description of each TextBox in the Output TextBox.
55
string output;
56
57
output = "Name=Your name\r\n";
58
output += "Address=Your address\r\n";
59
output += "Occupation=Only allowed value is 'Programmer'\r\n";
60
output += "Age=Your age";
61
62
//Insert the new text.
63
this.textBoxOutput.Text = output;
64
}
65
66
private void textBoxEmpty_Validating(object sender, CancelEventArgs e)
67
{
68
//我们知道这个sender是一个对话框,所以我们将他们强制转换为TextBox
69
TextBox tb = (TextBox)sender;
70
71
//如果对话框是空的话我们设置TextBox背景色为红色来象征问题。
72
//如果控件有valid信息,我们就使用控件的Tag值来指出。
73
if (tb.Text.Length == 0)
74
{
75
tb.BackColor = Color.Red;
76
tb.Tag = false;
77
//在这个例子中我们不想取消further processing
78
//但是如果我们想要这么做的话,我们只需要添加以下一行:
79
//e.Cancel=true;
80
}
81
else
82
{
83
this.BackColor = SystemColors.Window;
84
tb.Tag = true;
85
}
86
//Finally ,we call ValidateOK which will set the value of the OK button.
87
ValidateOK();
88
}
89
90
private void textBoxOccupation_Validating(object sender, CancelEventArgs e)
91
{
92
//Cast the sender object to a textBox
93
TextBox tb = (TextBox)sender;
94
95
//Check if the values are correct
96
if (tb.Text.CompareTo("Programmer") == 0 || tb.Text.Length == 0)
97
{
98
tb.Tag = true;
99
tb.BackColor = Color.Red;
100
}
101
else
102
{
103
tb.Tag = false;
104
tb.BackColor = SystemColors.Window;
105
}
106
107
//Set the state of the OK button
108
ValidateOK();
109
}
110
111
private void textBoxAge_KeyPress(object sender, KeyPressEventArgs e)
112
{
113
if ((e.KeyChar < 48 || e.KeyChar > 57) && e.KeyChar != 8)
114
{
115
e.Handled = true; //Remove the character
116
//等于true告诉用户不应该对字符进行任何操作
117
}
118
}
119
120
private void textBox_TextChanged(object sender, EventArgs e)
121
{
122
//Cast the sender object to a TextBox
123
TextBox tb = (TextBox)sender;
124
125
//Test if the data is valid and set the tag and back ground color accordingly.
126
if (tb.Text.Length == 0 && tb != textBoxOccupation)
127
{
128
tb.Tag = false;
129
tb.BackColor = Color.Red;
130
}
131
else if (tb == textBoxOccupation && (tb.Text.Length != 0 && tb.Text.CompareTo("Programmer") != 0))
132
{
133
//Don't set the color here,as it will color change while the user is typing
134
tb.Tag = false;
135
}
136
else
137
{
138
tb.Tag = true;
139
tb.BackColor = SystemColors.Window;
140
}
141
142
//Call ValidateOK to set the OK button
143
ValidateOK();
144
}
145
146
private void ValidateOK()
147
{
148
//Set the OK button to enabled if all the Tags are true
149
this.buttonOK.Enabled = ((bool)(this.textBoxName.Tag) &&
150
(bool)(this.textBoxAge.Tag) &&
151
(bool)(this.textBoxAddress.Tag) &&
152
(bool)(this.textBoxOccupation.Tag));
153
}
154
}
155
}
using System;2
using System.Collections.Generic;3
using System.ComponentModel;4
using System.Data;5
using System.Drawing;6
using System.Text;7
using System.Windows.Forms;8

9
namespace WA_TextBoxTest10


{11
public partial class Form1 : Form12

{13
public Form1()14

{15
InitializeComponent();16
this.buttonOK.Enabled = false;17

18
//Tag values for testing if the data is valid.19
this.textBoxName.Tag = false;20
this.textBoxAddress.Tag = false;21
this.textBoxAge.Tag = false;22
this.textBoxOccupation.Tag = false;23

24
//订阅事件Subscriptions to events25
this.textBoxName.Validating += new CancelEventHandler(this.textBoxEmpty_Validating);26
this.textBoxAddress.Validating += new CancelEventHandler(this.textBoxEmpty_Validating);27
this.textBoxOccupation.Validating += new CancelEventHandler(this.textBoxOccupation_Validating);28
this.textBoxAge.Validating += new CancelEventHandler(this.textBoxEmpty_Validating);29

30
//当控件中文本发生改变,就激发TextChanged事件。31
this.textBoxName.TextChanged +=new EventHandler(textBox_TextChanged);32
this.textBoxAddress.TextChanged+=new EventHandler(textBox_TextChanged);33
this.textBoxOccupation.TextChanged+=new EventHandler(textBox_TextChanged);34
this.textBoxAge.TextChanged += new EventHandler(textBox_TextChanged);35
}36

37
private void buttonOK_Click(object sender, EventArgs e)38

{39
//No testing for invalid values are made ,as that should not be necessary40
string output;41
42
//Concatenate the text values of for TextBoxes.43
output = "Name:" + this.textBoxName.Text + "\r\n";44
output += "Address:" + this.textBoxAddress.Text + "\r\n";45
output += "Occupation:" + this.textBoxOccupation.Text + "\r\n";46
output += "Age:" + this.textBoxAge.Text;47
48
//Insert the new text.49
this.textBoxOutput.Text = output;50
}51

52
private void buttonHelp_Click(object sender, EventArgs e)53

{54
//Write a short description of each TextBox in the Output TextBox.55
string output;56

57
output = "Name=Your name\r\n";58
output += "Address=Your address\r\n";59
output += "Occupation=Only allowed value is 'Programmer'\r\n";60
output += "Age=Your age";61

62
//Insert the new text.63
this.textBoxOutput.Text = output;64
}65

66
private void textBoxEmpty_Validating(object sender, CancelEventArgs e)67

{68
//我们知道这个sender是一个对话框,所以我们将他们强制转换为TextBox69
TextBox tb = (TextBox)sender;70

71
//如果对话框是空的话我们设置TextBox背景色为红色来象征问题。72
//如果控件有valid信息,我们就使用控件的Tag值来指出。73
if (tb.Text.Length == 0)74

{75
tb.BackColor = Color.Red;76
tb.Tag = false;77
//在这个例子中我们不想取消further processing78
//但是如果我们想要这么做的话,我们只需要添加以下一行:79
//e.Cancel=true;80
}81
else82

{83
this.BackColor = SystemColors.Window;84
tb.Tag = true;85
}86
//Finally ,we call ValidateOK which will set the value of the OK button.87
ValidateOK();88
}89

90
private void textBoxOccupation_Validating(object sender, CancelEventArgs e)91

{92
//Cast the sender object to a textBox93
TextBox tb = (TextBox)sender;94
95
//Check if the values are correct96
if (tb.Text.CompareTo("Programmer") == 0 || tb.Text.Length == 0)97

{98
tb.Tag = true;99
tb.BackColor = Color.Red;100
}101
else102

{103
tb.Tag = false;104
tb.BackColor = SystemColors.Window;105
}106

107
//Set the state of the OK button108
ValidateOK();109
}110

111
private void textBoxAge_KeyPress(object sender, KeyPressEventArgs e)112

{113
if ((e.KeyChar < 48 || e.KeyChar > 57) && e.KeyChar != 8)114

{115
e.Handled = true; //Remove the character116
//等于true告诉用户不应该对字符进行任何操作117
}118
}119

120
private void textBox_TextChanged(object sender, EventArgs e)121

{122
//Cast the sender object to a TextBox123
TextBox tb = (TextBox)sender;124

125
//Test if the data is valid and set the tag and back ground color accordingly.126
if (tb.Text.Length == 0 && tb != textBoxOccupation)127

{128
tb.Tag = false;129
tb.BackColor = Color.Red;130
}131
else if (tb == textBoxOccupation && (tb.Text.Length != 0 && tb.Text.CompareTo("Programmer") != 0))132

{133
//Don't set the color here,as it will color change while the user is typing134
tb.Tag = false;135
}136
else137

{138
tb.Tag = true;139
tb.BackColor = SystemColors.Window;140
}141

142
//Call ValidateOK to set the OK button143
ValidateOK();144
}145

146
private void ValidateOK()147

{ 148
//Set the OK button to enabled if all the Tags are true149
this.buttonOK.Enabled = ((bool)(this.textBoxName.Tag) &&150
(bool)(this.textBoxAge.Tag) &&151
(bool)(this.textBoxAddress.Tag) &&152
(bool)(this.textBoxOccupation.Tag));153
}154
}155
}[示例说明]:
1、开发语言:C#
2、开发环境:Visual Studio.Net 2005 Team suite
3、开发模板:C#.net项目->Windows应用程序
本文介绍如何使用 C# 的 TextBox 控件实现数据验证及事件处理。通过实例演示了 TextBox 控件的基本用法,包括 Validating 事件的利用以及如何通过多委托处理同一事件。
457

被折叠的 条评论
为什么被折叠?



