C#开发之——CheckBox(12.11)

一 概述

在C#语言中复选框(CheckBox)是与上一节RadioButton中介绍的单选按钮相对应的,用于选择多个选项的操作。

复选框主要的属性是:Name、Text、Checked,其中:

  • Name:表示这个组件的名称
  • Text:表示这个组件的标题
  • Checked:表示这个组件是否已经选中

二 实例 完成选择用户爱好的操作,并在消息框中显示所选的爱好

2.1 要求

根据题目要求,用户爱好包括篮球、排球、羽毛球、乒乓球、游泳、阅读、写作,因此需要 7 个复选框

2.2 界面

2.3 点击"确认"代码逻辑

1
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
public partial class CheckBoxForm : Form
{
public CheckBoxForm()
{
InitializeComponent();
}
//单击“确认”按钮,显示选择的爱好
private void button1_Click(object sender, EventArgs e)
{
string msg = "";
if (checkBox1.Checked)
{
msg = msg + " " + checkBox1.Text;
}
if (checkBox2.Checked)
{
msg = msg + " " + checkBox2.Text;
}
if (checkBox3.Checked)
{
msg = msg + " " + checkBox3.Text;
}
if (checkBox4.Checked)
{
msg = msg + " " + checkBox4.Text;
}
if (checkBox5.Checked)
{
msg = msg + " " + checkBox5.Text;
}
if (checkBox6.Checked)
{
msg = msg + " " + checkBox6.Text;
}
if (checkBox7.Checked)
{
msg = msg + " " + checkBox7.Text;
}
if(msg != "")
{
MessageBox.Show("您选择的爱好是:" + msg, "提示");
}
else
{
MessageBox.Show("您没有选择爱好", "提示");
}
}
}

2.4 效果图

2.5 总结

  • 与判断单选按钮是否被选中一样,判断复选框是否已被选中也使用Checked属性

  • 试想如果界面上的复选框有几十个或更多,每个复选框都需要判断,则会出现很多的冗余代码

  • 由于都要获取复选框是否已被选中了,界面上的每一个控件都继承自Control类,直接判断界面上的控件是否为复选框即可。实现上述功能的代码可以简化为如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    private void button1_Click(object sender, EventArgs e)
    {
    string msg = "";
    foreach(Control c in Controls)
    {
    //判断控件是否为复选框控件
    if(c is CheckBox)
    {
    if (((CheckBox)c).Checked)
    {
    msg = msg + " " + ((CheckBox)c).Text;
    }
    }
    }
    if(msg != "")
    {
    MessageBox.Show("您选择的爱好是:" + msg, "提示");
    }
    else
    {
    MessageBox.Show("您没有选择爱好", "提示");
    }
    }