[示例出处]:本示例来自《C#入门经典》第三版中文版,P349-P353
[示例涉及]:1、RadioBox、CheckBox控件的基本使用
2、Validating事件的使用(同
[C#][SAMPLE][CODE][Control]TextBox和Validating事件的相关处理 )
3、多委托处理同一事件方法(同
[C#][SAMPLE][CODE][Control]TextBox和Validating事件的相关处理 )
[示例代码]: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.textBoxAge = new System.Windows.Forms.TextBox();
36
this.textBoxOutput = new System.Windows.Forms.TextBox();
37
this.label4 = new System.Windows.Forms.Label();
38
this.label5 = new System.Windows.Forms.Label();
39
this.buttonOK = new System.Windows.Forms.Button();
40
this.buttonHelp = new System.Windows.Forms.Button();
41
this.checkBoxProgrammer = new System.Windows.Forms.CheckBox();
42
this.groupBoxSex = new System.Windows.Forms.GroupBox();
43
this.radioButtonMale = new System.Windows.Forms.RadioButton();
44
this.radioButtonFemale = new System.Windows.Forms.RadioButton();
45
this.groupBoxSex.SuspendLayout();
46
this.SuspendLayout();
47
//
48
// label1
49
//
50
this.label1.AutoSize = true;
51
this.label1.Location = new System.Drawing.Point(26, 27);
52
this.label1.Name = "label1";
53
this.label1.Size = new System.Drawing.Size(59, 12);
54
this.label1.TabIndex = 0;
55
this.label1.Text = "labelName";
56
//
57
// label2
58
//
59
this.label2.AutoSize = true;
60
this.label2.Location = new System.Drawing.Point(26, 53);
61
this.label2.Name = "label2";
62
this.label2.Size = new System.Drawing.Size(77, 12);
63
this.label2.TabIndex = 1;
64
this.label2.Text = "labelAddress";
65
//
66
// textBoxName
67
//
68
this.textBoxName.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
69
| System.Windows.Forms.AnchorStyles.Right)));
70
this.textBoxName.Location = new System.Drawing.Point(127, 24);
71
this.textBoxName.Name = "textBoxName";
72
this.textBoxName.Size = new System.Drawing.Size(317, 21);
73
this.textBoxName.TabIndex = 2;
74
//
75
// textBoxAddress
76
//
77
this.textBoxAddress.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
78
| System.Windows.Forms.AnchorStyles.Right)));
79
this.textBoxAddress.Location = new System.Drawing.Point(127, 50);
80
this.textBoxAddress.Multiline = true;
81
this.textBoxAddress.Name = "textBoxAddress";
82
this.textBoxAddress.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;
83
this.textBoxAddress.Size = new System.Drawing.Size(317, 102);
84
this.textBoxAddress.TabIndex = 2;
85
//
86
// textBoxAge
87
//
88
this.textBoxAge.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
89
| System.Windows.Forms.AnchorStyles.Right)));
90
this.textBoxAge.Location = new System.Drawing.Point(127, 254);
91
this.textBoxAge.Name = "textBoxAge";
92
this.textBoxAge.Size = new System.Drawing.Size(99, 21);
93
this.textBoxAge.TabIndex = 4;
94
this.textBoxAge.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.textBoxAge_KeyPress);
95
//
96
// textBoxOutput
97
//
98
this.textBoxOutput.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
99
| System.Windows.Forms.AnchorStyles.Left)
100
| System.Windows.Forms.AnchorStyles.Right)));
101
this.textBoxOutput.Location = new System.Drawing.Point(28, 307);
102
this.textBoxOutput.Multiline = true;
103
this.textBoxOutput.Name = "textBoxOutput";
104
this.textBoxOutput.ReadOnly = true;
105
this.textBoxOutput.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;
106
this.textBoxOutput.Size = new System.Drawing.Size(416, 171);
107
this.textBoxOutput.TabIndex = 5;
108
//
109
// label4
110
//
111
this.label4.AutoSize = true;
112
this.label4.Location = new System.Drawing.Point(26, 257);
113
this.label4.Name = "label4";
114
this.label4.Size = new System.Drawing.Size(53, 12);
115
this.label4.TabIndex = 7;
116
this.label4.Text = "labelAge";
117
//
118
// label5
119
//
120
this.label5.AutoSize = true;
121
this.label5.Location = new System.Drawing.Point(26, 289);
122
this.label5.Name = "label5";
123
this.label5.Size = new System.Drawing.Size(71, 12);
124
this.label5.TabIndex = 8;
125
this.label5.Text = "labelOutput";
126
//
127
// buttonOK
128
//
129
this.buttonOK.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
130
this.buttonOK.Location = new System.Drawing.Point(458, 18);
131
this.buttonOK.Name = "buttonOK";
132
this.buttonOK.Size = new System.Drawing.Size(82, 21);
133
this.buttonOK.TabIndex = 9;
134
this.buttonOK.Text = "OK";
135
this.buttonOK.UseVisualStyleBackColor = true;
136
this.buttonOK.Click += new System.EventHandler(this.buttonOK_Click);
137
//
138
// buttonHelp
139
//
140
this.buttonHelp.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
141
this.buttonHelp.CausesValidation = false;
142
this.buttonHelp.Location = new System.Drawing.Point(458, 43);
143
this.buttonHelp.Name = "buttonHelp";
144
this.buttonHelp.Size = new System.Drawing.Size(82, 21);
145
this.buttonHelp.TabIndex = 10;
146
this.buttonHelp.Text = "Help";
147
this.buttonHelp.UseVisualStyleBackColor = true;
148
this.buttonHelp.Click += new System.EventHandler(this.buttonHelp_Click);
149
//
150
// checkBoxProgrammer
151
//
152
this.checkBoxProgrammer.AutoSize = true;
153
this.checkBoxProgrammer.Checked = true;
154
this.checkBoxProgrammer.CheckState = System.Windows.Forms.CheckState.Checked;
155
this.checkBoxProgrammer.Location = new System.Drawing.Point(28, 166);
156
this.checkBoxProgrammer.Name = "checkBoxProgrammer";
157
this.checkBoxProgrammer.Size = new System.Drawing.Size(84, 16);
158
this.checkBoxProgrammer.TabIndex = 11;
159
this.checkBoxProgrammer.Text = "Programmer";
160
this.checkBoxProgrammer.UseVisualStyleBackColor = true;
161
//
162
// groupBoxSex
163
//
164
this.groupBoxSex.Controls.Add(this.radioButtonMale);
165
this.groupBoxSex.Controls.Add(this.radioButtonFemale);
166
this.groupBoxSex.Location = new System.Drawing.Point(28, 188);
167
this.groupBoxSex.Name = "groupBoxSex";
168
this.groupBoxSex.Size = new System.Drawing.Size(415, 55);
169
this.groupBoxSex.TabIndex = 12;
170
this.groupBoxSex.TabStop = false;
171
this.groupBoxSex.Text = "Sex";
172
//
173
// radioButtonMale
174
//
175
this.radioButtonMale.AutoSize = true;
176
this.radioButtonMale.Location = new System.Drawing.Point(235, 24);
177
this.radioButtonMale.Name = "radioButtonMale";
178
this.radioButtonMale.Size = new System.Drawing.Size(113, 16);
179
this.radioButtonMale.TabIndex = 1;
180
this.radioButtonMale.Text = "radioButtonMale";
181
this.radioButtonMale.UseVisualStyleBackColor = true;
182
//
183
// radioButtonFemale
184
//
185
this.radioButtonFemale.AutoSize = true;
186
this.radioButtonFemale.Checked = true;
187
this.radioButtonFemale.Location = new System.Drawing.Point(55, 24);
188
this.radioButtonFemale.Name = "radioButtonFemale";
189
this.radioButtonFemale.Size = new System.Drawing.Size(125, 16);
190
this.radioButtonFemale.TabIndex = 0;
191
this.radioButtonFemale.TabStop = true;
192
this.radioButtonFemale.Text = "radioButtonFemale";
193
this.radioButtonFemale.UseVisualStyleBackColor = true;
194
//
195
// Form1
196
//
197
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
198
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
199
this.ClientSize = new System.Drawing.Size(561, 490);
200
this.Controls.Add(this.groupBoxSex);
201
this.Controls.Add(this.checkBoxProgrammer);
202
this.Controls.Add(this.buttonHelp);
203
this.Controls.Add(this.buttonOK);
204
this.Controls.Add(this.label5);
205
this.Controls.Add(this.label4);
206
this.Controls.Add(this.textBoxOutput);
207
this.Controls.Add(this.textBoxAge);
208
this.Controls.Add(this.textBoxAddress);
209
this.Controls.Add(this.textBoxName);
210
this.Controls.Add(this.label2);
211
this.Controls.Add(this.label1);
212
this.Name = "Form1";
213
this.Text = "Form1";
214
this.Validating += new System.ComponentModel.CancelEventHandler(this.textBoxEmpty_Validating);
215
this.groupBoxSex.ResumeLayout(false);
216
this.groupBoxSex.PerformLayout();
217
this.ResumeLayout(false);
218
this.PerformLayout();
219
220
}
221
222
#endregion
223
224
private System.Windows.Forms.Label label1;
225
private System.Windows.Forms.Label label2;
226
private System.Windows.Forms.TextBox textBoxName;
227
private System.Windows.Forms.TextBox textBoxAddress;
228
private System.Windows.Forms.TextBox textBoxAge;
229
private System.Windows.Forms.TextBox textBoxOutput;
230
private System.Windows.Forms.Label label4;
231
private System.Windows.Forms.Label label5;
232
private System.Windows.Forms.Button buttonOK;
233
private System.Windows.Forms.Button buttonHelp;
234
private System.Windows.Forms.CheckBox checkBoxProgrammer;
235
private System.Windows.Forms.GroupBox groupBoxSex;
236
private System.Windows.Forms.RadioButton radioButtonMale;
237
private System.Windows.Forms.RadioButton radioButtonFemale;
238
}
239
}
240
241
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
23
//订阅事件Subscriptions to events
24
this.textBoxName.Validating += new CancelEventHandler(this.textBoxEmpty_Validating);
25
this.textBoxAddress.Validating += new CancelEventHandler(this.textBoxEmpty_Validating);
26
this.textBoxAge.Validating += new CancelEventHandler(this.textBoxEmpty_Validating);
27
28
//当控件中文本发生改变,就激发TextChanged事件。
29
this.textBoxName.TextChanged +=new EventHandler(textBox_TextChanged);
30
this.textBoxAddress.TextChanged+=new EventHandler(textBox_TextChanged);
31
this.textBoxAge.TextChanged += new EventHandler(textBox_TextChanged);
32
}
33
34
private void buttonOK_Click(object sender, EventArgs e)
35
{
36
//No testing for invalid values are made ,as that should not be necessary
37
string output;
38
39
//Concatenate the text values of for TextBoxes.
40
output = "Name:" + this.textBoxName.Text + "\r\n";
41
output += "Address:" + this.textBoxAddress.Text + "\r\n";
42
output += "Occupation:" + (string)(this.checkBoxProgrammer.Checked ?
43
"Programmer" : "Not a programmer") + "\r\n"; //此句等价于下面这句
44
output += "Occupation:" + (string)(this.checkBoxProgrammer.Checked ?
45
this.checkBoxProgrammer.Text : ("Not a "+this.checkBoxProgrammer.Text)) + "\r\n";
46
output += "Sex:" + (string)(this.radioButtonFemale.Checked ?
47
"Female" : "Male") + "\r\n"; //此句等价于下面这句
48
output += "Sex:" + (string)(this.radioButtonFemale.Checked ?
49
this.radioButtonFemale.Text : this.radioButtonMale.Text) + "\r\n";
50
output += "Age:" + this.textBoxAge.Text;
51
52
//Insert the new text.
53
this.textBoxOutput.Text = output;
54
}
55
56
private void buttonHelp_Click(object sender, EventArgs e)
57
{
58
//Write a short description of each TextBox in the Output TextBox.
59
string output;
60
61
output = "Name=Your name\r\n";
62
output += "Address=Your address\r\n";
63
output += "Programmer=Check 'Programmer' if you are a programmer\r\n";
64
output += "Sex=Choose your sex\r\n";
65
output += "Age=Your age";
66
67
//Insert the new text.
68
this.textBoxOutput.Text = output;
69
}
70
71
private void textBoxEmpty_Validating(object sender, CancelEventArgs e)
72
{
73
//我们知道这个sender是一个对话框,所以我们将他们强制转换为TextBox
74
TextBox tb = (TextBox)sender;
75
76
//如果对话框是空的话我们设置TextBox背景色为红色来象征问题。
77
//如果控件有valid信息,我们就使用控件的Tag值来指出。
78
if (tb.Text.Length == 0)
79
{
80
tb.BackColor = Color.Red;
81
tb.Tag = false;
82
//在这个例子中我们不想取消further processing
83
//但是如果我们想要这么做的话,我们只需要添加以下一行:
84
//e.Cancel=true;
85
}
86
else
87
{
88
this.BackColor = SystemColors.Window;
89
tb.Tag = true;
90
}
91
//Finally ,we call ValidateOK which will set the value of the OK button.
92
ValidateOK();
93
}
94
95
private void textBoxAge_KeyPress(object sender, KeyPressEventArgs e)
96
{
97
if ((e.KeyChar < 48 || e.KeyChar > 57) && e.KeyChar != 8)
98
{
99
e.Handled = true; //Remove the character
100
//等于true告诉用户不应该对字符进行任何操作
101
}
102
}
103
104
private void textBox_TextChanged(object sender, EventArgs e)
105
{
106
//Cast the sender object to a TextBox
107
TextBox tb = (TextBox)sender;
108
109
//Test if the data is valid and set the tag and back ground color accordingly.
110
if (tb.Text.Length == 0)
111
{
112
tb.Tag = false;
113
tb.BackColor = Color.Red;
114
}
115
else
116
{
117
tb.Tag = true;
118
tb.BackColor = SystemColors.Window;
119
}
120
121
//Call ValidateOK to set the OK button
122
ValidateOK();
123
}
124
125
private void ValidateOK()
126
{
127
//Set the OK button to enabled if all the Tags are true
128
this.buttonOK.Enabled = ((bool)(this.textBoxName.Tag) &&
129
(bool)(this.textBoxAge.Tag) &&
130
(bool)(this.textBoxAddress.Tag));
131
}
132
}
133
}
[示例说明]:
1、开发语言:C#
2、开发环境:Visual Studio.Net 2005 Team suite
3、开发模板:C#.net项目->Windows应用程序