如何通过单击复选框更改标签文本(数字)?

How to make label text(number) change by clicking checkbox?

老师给我们布置了作业。复选框是学生可以选择的课程,其下方的标签是剩余的空闲位置。基本上每次课程(复选框)选择时,在标签处连接到它的数字应该减少负 1。如果人取消选中它,数字应该 return 到基本。

对不起我的英语,我希望它是可以理解的。

在这个例子中,我选择了每个 checkboxscheckedchanged 属性,这是每个 checkboxs 中的函数。您可以根据需要更改 0++-- 来更改初始值或更改后的值。您只需将每个函数的两个 if 条件添加到您的函数,并更改其中的名称以反映标签的名称。

public partial class Form1 : Form
    {
        int counter=0;
        public Form1()
        {
            InitializeComponent();
            label1.Text = counter.ToString();
        }

        private void checkBox1_CheckedChanged(object sender, EventArgs e)
        {
            if (checkBox1.Checked)
            {
                counter++;
                label1.Text = counter.ToString();
            }
            if (!checkBox1.Checked)
            {
                counter--;
                label1.Text = counter.ToString();
            }
        }

        private void checkBox3_CheckedChanged(object sender, EventArgs e)
        {
            if (checkBox3.Checked)
            {
                counter++;
                label1.Text = counter.ToString();
            }
            if (!checkBox3.Checked)
            {
                counter--;
                label1.Text = counter.ToString();
            }
        }

        private void checkBox2_CheckedChanged(object sender, EventArgs e)
        {
            if (checkBox2.Checked)
            {
                counter++;
                label1.Text = counter.ToString();
            }
            if (!checkBox2.Checked)
            {
                counter--;
                label1.Text = counter.ToString();
            }
        }
    }

您可以尝试为每个复选框订阅 CheckedChanged 事件。并使用 Convert.ToInt32 Method 获取标签中的值。然后通过swicth statement.

判断选中的checkbox
public Form1()
{
    InitializeComponent();

    checkBox1.CheckedChanged += checkBox_CheckedChanged;
    checkBox2.CheckedChanged += checkBox_CheckedChanged;
    checkBox3.CheckedChanged += checkBox_CheckedChanged;
}

private void checkBox_CheckedChanged(object sender, EventArgs e)
{
    if (((CheckBox)sender).Checked)
    {
        switch (((CheckBox)sender).Name)
        {
            case "checkBox1":
                labelofcb1.Text = (Convert.ToInt32(labelofcb1.Text) + 1).ToString();
                break;
            case "checkBox2":
                labelofcb2.Text = (Convert.ToInt32(labelofcb2.Text) + 1).ToString();
                break;
            case "checkBox3":
                labelofcb3.Text = (Convert.ToInt32(labelofcb3.Text) + 1).ToString();
                break;
        }
    }
    else
    {
        switch (((CheckBox)sender).Name)
        {
            case "checkBox1":
                labelofcb1.Text = (Convert.ToInt32(labelofcb1.Text) - 1).ToString();
                break;
            case "checkBox2":
                labelofcb2.Text = (Convert.ToInt32(labelofcb2.Text) - 1).ToString();
                break;
            case "checkBox3":
                labelofcb3.Text = (Convert.ToInt32(labelofcb3.Text) - 1).ToString();
                break;
        }
    }
}