王朝网络
分享
 
 
 

RadioBox、CheckBox和Validating事件的相关处理

王朝other·作者佚名  2008-05-30
宽屏版  字体: |||超大  

[示例出处]:本示例来自《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

1namespace 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

1using System;

2using System.Collections.Generic;

3using System.ComponentModel;

4using System.Data;

5using System.Drawing;

6using System.Text;

7using System.Windows.Forms;

8

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

http://www.cnblogs.com/volnet/archive/2006/11/27/574437.html

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
>>返回首页<<
推荐阅读
 
 
频道精选
 
静静地坐在废墟上,四周的荒凉一望无际,忽然觉得,凄凉也很美
© 2005- 王朝网络 版权所有