RadioButton控件
常用属性:Name、Text、Checked、AutoCheck、CheckAlign
常用事件:click 不管选择状态是什么,都会引发事件
CheckedChanged 选择改变时引发事件,一般使用CheckedChanged比较多
知识点1:
一般一组RadioButton中只能选择一个为选中状态,当其中一个选中后其他Radio Button自动切换为未选中状态。
一组RadioButton中,只要设置一个RadioButton的AutoCheck=false,则一组RadioButton可以有多个选中。
知识点2:
如何将多个RadioButton分组?
将不同功能的RadioButton放到不同的容器控件中即可以实现RadioButton分组。
比如上面的例子中,将男、女RadioButton放到一个Panel中,将正常、冻结RadioButton放到另一个Panel中,就实现了分组,两组RadioButton之间的操作互不干扰。
知识点3:
通过按钮获得选择结果,如下:
方法:
这种情况,一般每组RadioButton中初始化时都有一个处于选中状态。
//提交信息 private void btnSubmit_Click(object sender, EventArgs e) { string str1 = rbtnMan.Checked?rbtnMan.Text:rbtnFemal.Text; string str2 = rbtnNomal.Checked?rbtnNomal.Text:rbtnFemal.Text; MessageBox.Show(str1 + ":" + str2); }
知识点4:
通过选择RadioButton获得不同的操作结果,如下:
方法:
这种情况,每个RadioButton初始化时都处于未选中状态。
//每个RadioButton都绑定一个CheckedChanged
private void rbtn1_CheckedChanged(object sender, EventArgs e) { if (rbtn1.Checked) { MessageBox.Show("system1"); } } private void rbtn2_CheckedChanged(object sender, EventArgs e) { if (rbtn2.Checked) { MessageBox.Show("system1"); } } private void rbtn3_CheckedChanged(object sender, EventArgs e) { if (rbtn3.Checked) { MessageBox.Show("system1"); } }
需要注意的是在AutoCheck=true的情况下,当由“系统1”切换到“系统2”时,会触发两次CheckChanged事件,首先是“系统1”触发CheckChanged事件,然后是“系统2”触发CheckChanged事件。
修改如下代码:
private void radioButton1_CheckedChanged_1(object sender, EventArgs e) { MessageBox.Show("radioButton1_CheckedChanged_1"); } private void radioButton2_CheckedChanged_1(object sender, EventArgs e) { MessageBox.Show("radioButton2_CheckedChanged_1"); } private void radioButton3_CheckedChanged_1(object sender, EventArgs e) { MessageBox.Show("radioButton3_CheckedChanged_1"); }
当由“系统1”切换到“系统2”时,先弹出对话框显示“radioButton1_CheckedChanged_1”,关闭后再弹出对话框“radioButton2_CheckedChanged_1”。