[示例涉及]:
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 窗体设计器生成的代码
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

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应用程序