[示例涉及]:
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

2



3

4



5


6

7

8

9

10


11

12

13

14

15



16

17



18

19

20

21

22

23


24

25


26

27

28

29

30



31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

171

172

173

174

175

176

177

178

179

180

181

182

183

184

185

186

187

188

189

190

191

192

193

194

195

196

197

198

199

200

201

202

203

204

205

206

207

208

209

210

211

212

213

214

215

216

217

218

219

220

221

222

223

224

225

226

227

228

229

230

231

232

233

234

235

236

237

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
}

2

3

4

5

6

7

8

9

10



11

12



13

14



15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35



36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57



58

59

60

61

62

63

64

65

66

67

68

69

70

71

72



73

74

75

76

77

78

79



80

81

82

83

84

85

86

87



88

89

90

91

92

93

94

95

96



97

98



99

100

101

102

103

104

105



106

107

108

109

110

111



112

113

114

115

116



117

118

119

120

121

122

123

124

125

126



127

128

129

130

131

132

133

[示例说明]:
1、开发语言:C#
2、开发环境:Visual Studio.Net 2005 Team suite
3、开发模板:C#.net项目->Windows应用程序